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

Reply via email to