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