ID: 26465 Updated by: [EMAIL PROTECTED] Reported By: _nospam_svbev at umail dot ru -Status: Open +Status: Bogus Bug Type: MSSQL related Operating System: Win2k PHP Version: 4CVS-2003-11-28 (stable) New Comment:
Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php RTFM: "In case a second call is made to mssql_connect() with the same arguments, no new link will be established, but instead, the link identifier of the already opened link will be returned." Previous Comments: ------------------------------------------------------------------------ [2003-11-29 15:06:47] _nospam_svbev at umail dot ru where $php_errormsg is: 'mssql_query(): <RSRC_ID> is not a valid MS SQL-Link resource' ------------------------------------------------------------------------ [2003-11-29 11:46:01] _nospam_svbev at umail dot ru Description: ------------ mssql_close() closes more than one open connection for the same account depending on variable scopes containing $connection_id variable. The last STEP in the following sequence with the CONDITIONS FAILED STEPS: 1. establish connection #1 2. establish connection #2 and close it 2a. repeat 2 (connect and close this connection) 3. execute a query under connection #1 - FAILED CONDITIONS: 1. all the connections use the same username and password, 2. step #2 is performed inside a function Step 3 failed with '<RESOURCE_ID> is not a valid MS SQL-Link resource' message. It looks like the conn.#1 is closed. Some modifications of this algorithm WORK without any error. All above WORKS if do not repeat connection #2 (remove step 2a). Also all above (1,2,2a,3) WORKS if connection #2 is established for a different user. The code below contains 'step2()' function which just opens and closes the db connection. So the variables which handle resources for connections #1 & #2 belong to separate variable scopes. If I remove this function and insert its code instead of its call (the common variable scope is used) then ALL WORKS! Reproduce code: --------------- // // initialize variables // $servername = 'servername'; $dbname = 'dbname'; $user = 'login'; $pswd = 'pswd'; $strquery = 'select * from tablename'; // 1. $conn1 = mssql_connect( $servername, $user, $pswd ); mssql_select_db ( $dbname, $conn1 ); // 2. step2( $servername, $dbname, $user, $pswd, $strquery ); // $conn1 is still a valid resource. // 2a. step2( $servername, $dbname, $user, $pswd, $strquery ); // 3. $result = mssql_query( $strquery, $conn1 ); if( !$result ) echo "Step 3 FAILED: $php_errormsg <br>"; else // print the recordset // connect/disconnect function step2( $servername, $dbname, $user, $pswd, $strquery ) { $conn2 = mssql_connect( $servername, $user, $pswd ); mssql_select_db ( $dbname, $conn2 ); mssql_close( $conn2 ); } Expected result: ---------------- The query is processed successfully and the recordset is printed. Actual result: -------------- "Step 3 FAILED: $php_errormsg" is printed; ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=26465&edit=1