|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2007-05-11 17:29 UTC] 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. PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Oct 28 07:00:01 2025 UTC |
This bug affects me too, the following code fails when trying to set the ActiveConnection back to null to allow a disconnected recordset. // Connect to database $dsn = "Provider=SQLNCLI;Server=localhost;UID=********;Pwd=*******"; $conn = new COM("ADODB.Connection"); $conn->ConnectionTimeout = CONNECTION_TIMEOUT_SECONDS; $conn->CommandTimeout = COMMAND_TIMEOUT_SECONDS; $conn->CursorLocation = adUseClient; $conn->Open($dsn); // Get recordset $cmd->ActiveConnection = $conn; $rs->Open($cmd); // $rs->ActiveConnection = null; // PHP5 bug #41368I thing I'm expirionsing the same error but this is a connecton closed error, i think the connections drops with some microsoft gates. (unexpected error acured). hate VB with all junk from IT is any one will be reponsible for coding? Sorry, code (error) =============================================== Connection OPEN. Microsoft Access Driver: D:\ACCESS\DNSVER50.MDB Execute: SELECT * FROM Customers WHERE CustNo = 22585; Execute: INSERT INTO Customers ( CustName,CustAddress1,CustAddress2,CustCity,CustState,CustZip,CustTelephone,CustContact,Title,Notes,CustFaxNumber ) VALUES ( 'ADRIAN ANIKUSHIN','','XX XXXXXX STREET APP#1','MELROSE','MA','02176','1 (781) xxxxxxxx','ADRIAN ANIKUSHIN','','','1 (781) xxxxxxxx' ); Fatal error: Uncaught exception 'com_exception' with message 'Source: ADODB.Recordset Description: Operation is not allowed when the object is closed.' in D:\WWW\dns\access_order.php:8 Stack trace: #0 D:\WWW\dns\access_order.php(8): get_access_array() #1 D:\WWW\dns\access_order.php(55): get_access_array('INSERT INTO Cus...') #2 D:\WWW\dns\access_order.php(135): insert_access_array('Customers', Array) #3 D:\WWW\dns\access_order.php(201): get_access_customer(Array, 'shipper') #4 {main} thrown in D:\WWW\dns\access_order.php on line 8