Re: [FIX] Bug #25585: PHP crash if executed MSSQL-query with RAISERROR() call and error 515
| From: | Frank M. Kromann | Date: | Mon, 01 Dec 2003 19:02:28 +0000 |
| Subject: | Re: [FIX] Bug #25585: PHP crash if executed MSSQL-query with RAISERROR() call and error 515 | ||
| Groups: | php.internals | ||
| Request: | Send a blank email to internals+get-5934@lists.php.net to get a copy of this message | ||
This does not fix the problem.
mssql_query is designed to stop fetching for each result. Use
mssql_next_result() to move the internal pointer to the nex result and
process the data.
I have tested the code provided with the bug report and it works as I
expect (no crash).
- Frank
> I believe the problem here is in how mssql_query handles result sets
> that have multiple results returned, but none with rows (such as in
> this bug where there are multiple commands executed and multiple errors
> returned). In the php_mssql.c for PHP 4.3.4 the block at line 1145
> reads:
>
> while ((num_fields = dbnumcols(mssql_ptr->link)) <= 0 && retvalue ==
> SUCCEED) {
> retvalue = dbresults(mssql_ptr->link);
> }
>
> According to Microsoft
> (http://msdn.microsoft.com/library/en-us/dblibc/dbc_pdc04e_52sz.asp),
> however:
>
> "You must call dbresults until it returns NO_MORE_RESULTS, or
> any continued use of the DBPROCESS causes the DB-Library error
> 10038 'Results Pending'."
>
> As this code in php_mssql.c currently stands it stops looping the empty
> result sets too early becuase it's looking for SUCCEED instead of
> NO_MORE_RESULTS. Changing this code to:
>
> while ((num_fields = dbnumcols(mssql_ptr->link)) <= 0 && retvalue !=
> NO_MORE_RESULTS) {
> retvalue = dbresults(mssql_ptr->link);
> }
>
> causes both SQL Server error messages generated by the sample query in
> the bug report to be correctly displayed and eliminates the fault.
>
> Michael Sisolak
> msisolak@yahoo.com
>
>
> __________________________________
> Do you Yahoo!?
> Free Pop-Up Blocker - Get it now
> http://companion.yahoo.com/
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>