#33877 [NEW]: When multiple result sets are not freed subsequent queries fail

From: Date: Tue, 26 Jul 2005 22:53:10 +0000
Subject: #33877 [NEW]: When multiple result sets are not freed subsequent queries fail
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-82499@lists.php.net to get a copy of this message
From: Jeffrey dot Rodriguez at gmail dot com Operating system: Windows XP / 2000 PHP version: 5.0.4 PHP Bug Type: MSSQL related Bug description: When multiple result sets are not freed subsequent queries fail Description: ------------ NOTE: This issue seems to occur in versions (atleast) 4.3.4 - 5.0.4 WORKAROUND: Be sure to call mssql_free_result() on every result that has the potential to return multiple result sets. PROBLEM: When a query (stored procedure for example) returns multiple result sets, you have to call mssql_next_result() OR mssql_free_result() on the result of an mssql_query(). Failure to do so will cause subsequent mssql_next_query() or mssql_select_db() calls to fail. ADDITIONAL NOTES: The docs should be updated if this functionality is intended. Sorry about the 'excessive' length of code, I figure you can handle 8 extra lines. Reproduce code: --------------- <?php /* -- Stored procedure CREATE PROCEDURE bug_proofOfConcept_sp AS SELECT 'Result set one' AS 'Result Set'; SELECT 'Result set two' AS 'Result Set'; GO */ $link = mssql_connect("server", "user", "pass"); mssql_select_db("database", $link); $rs = mssql_query("EXECUTE bug_proofOfConcept_sp"); /* Note, it doesn't matter if you fetch from $rs */ /* This is where things bomb out */ if (!mssql_select_db("database", $link)) { echo "Broken, as expected.\n"; } /* If we free the result things work fine again. Alternatively, you could call mssql_next_result($rs) */ mssql_free_result($rs); // Select the database (3rd, and last time) if (!mssql_select_db("database", $link)) { echo "Everything should be working here; wtf?\n"; } ?> Expected result: ---------------- No output Actual result: -------------- Warning: mssql_select_db(): Unable to select database: database in H:\proofOfConcept.php on line 16 Broken, as expected. -- Edit bug report at http://bugs.php.net/?id=33877&edit=1 -- Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=33877&r=trysnapshot4 Try a CVS snapshot (php5.0): http://bugs.php.net/fix.php?id=33877&r=trysnapshot50 Try a CVS snapshot (php5.1): http://bugs.php.net/fix.php?id=33877&r=trysnapshot51 Fixed in CVS: http://bugs.php.net/fix.php?id=33877&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=33877&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=33877&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=33877&r=needscript Try newer version: http://bugs.php.net/fix.php?id=33877&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=33877&r=support Expected behavior: http://bugs.php.net/fix.php?id=33877&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=33877&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=33877&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=33877&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=33877&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=33877&r=dst IIS Stability: http://bugs.php.net/fix.php?id=33877&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=33877&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=33877&r=float No Zend Extensions: http://bugs.php.net/fix.php?id=33877&r=nozend MySQL Configuration Error: http://bugs.php.net/fix.php?id=33877&r=mysqlcfg

« previous php.bugs (#82499) next »