ID:               41368
 Updated by:       [EMAIL PROTECTED]
 Reported By:      ben dot crum at colony101uk dot com
-Status:           Open
+Status:           Assigned
 Bug Type:         COM related
 Operating System: Windows XP SP2
 PHP Version:      5.2.2
-Assigned To:      
+Assigned To:      wez
 New Comment:

Assigned to the maintainer.


Previous Comments:
------------------------------------------------------------------------

[2007-05-11 17:29:29] ben dot crum at colony101uk dot com

Description:
------------
This seems similar to Bug #22162 - Program performs "illegal
operation", but that was for PHP 4.3.1-dev.

I originally had PHP 5.1.6 installed on my PC and had written a few
scripts using ADODB Connections and Recordsets.  These ran fine as web
pages served by Apache's HTTP Server v2.0.

I upgraded to PHP 5.2.2 using the MSI and my scripts reported errors
for the same line of code.


Overwriting the contents of my C:\PHP\ folder with the contents of the
PHP 5.2.0 Zip file, I do NOT get these errors when running my scripts as
web pages through Apache or from the command line (i.e. "php.exe
c:\Web\simple.php").

If I overwrite the contents of my C:\PHP\ folder with the PHP 5.2.1 or
5.2.2 Zip files I get the error mentioned above when running them
through Apache or from the command line.

Reproduce code:
---------------
Here is a simple sample that works with PHP 5.2.0, but breaks for me
when using PHP 5.2.1+:

------------------------------
<?php

$rs = new COM('ADODB.Recordset');
// Problem line below for PHP 5.2.1+:
$rs->ActiveConnection = 'PROVIDER=SQLOLEDB; DATA SOURCE=(local);
UID=sa; PWD=password; INITIAL CATALOG=myDB';
$rs->CursorLocation = 3;
$rs->Source = 'SELECT * FROM [myTable]';
$rs->Open();

if ( $rs->EoF )
{
        print( '- No records returned. -' );
}
else
{
        print( 'Returned records: ' . $rs->RecordCount );
}

$rs->Close();
$rs = NULL;

?>
------------------------------

Expected result:
----------------
This is the error I get on lines that set an ADODB.Recordset object's
.ActiveConnection property:

Fatal error: Uncaught exception 'com_exception' with message
'<b>Source:</b> Provider<br/><b>Description:</b> Type mismatch.' in
C:\Web\simple.php:4 Stack trace: #0 C:\Web\simple.php(4): unknown() #1
{main} thrown in C:\Web\simple.php on line 4

Actual result:
--------------
I don't think it's the objects and their properties coz this works as a
VBScript (.vbs) file (no hissing please!):

------------------------------
OPTION EXPLICIT

DIM rs

SET rs = CreateObject("ADODB.Recordset")
rs.ActiveConnection = "PROVIDER=SQLOLEDB; DATA SOURCE=(local); UID=sa;
PWD=password; INITIAL CATALOG=myDB"
rs.CursorLocation = 3
rs.Source = "SELECT * FROM [myTable]"
rs.Open

IF ( rs.EoF ) THEN
        WScript.Echo( "- No records returned. -" )
ELSE
        WScript.Echo( "Returned records: " & rs.RecordCount )
END IF

rs.Close
SET rs = Nothing
------------------------------


It looks to me that after 5.2.0, PHP no longer lets you set the
.ActiveConnection of an ADODB.Recordset (or I've just messed up my PHP
folder...).

Thanks for your help.


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=41368&edit=1

Reply via email to