ID: 33877 User updated by: Jeffrey dot Rodriguez at gmail dot com Reported By: Jeffrey dot Rodriguez at gmail dot com Status: Open Bug Type: MSSQL related Operating System: Windows XP / 2000 PHP Version: 5.0.4 New Comment:
Typo: Failure to do so will cause subsequent mssql_next_query() or mssql_select_db() calls to fail. Should read: Failure to do so will cause subsequent mssql_query() or mssql_select_db() calls to fail. Previous Comments: ------------------------------------------------------------------------ [2005-07-27 00:53:09] Jeffrey dot Rodriguez at gmail dot com 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 this bug report at http://bugs.php.net/?id=33877&edit=1