]> granicus.if.org Git - php/commitdiff
Fix for bug #25817
authorFrank M. Kromann <fmk@php.net>
Mon, 17 Nov 2003 20:53:28 +0000 (20:53 +0000)
committerFrank M. Kromann <fmk@php.net>
Mon, 17 Nov 2003 20:53:28 +0000 (20:53 +0000)
Check for a return value from a stored procedure right after fetching rows

ext/mssql/php_mssql.c

index 1956b22af4c33fc22c20c7298b324c02a88d930f..31859e953dd900455881fa183b6c1ae49cc3e686 100644 (file)
@@ -1061,6 +1061,9 @@ static int _mssql_fetch_batch(mssql_link *mssql_ptr, mssql_result *result, int r
                result->lastresult = retvalue;
        }
        efree(column_types);
+       if (result->statement) {
+               _mssql_get_sp_result(mssql_ptr, result->statement TSRMLS_CC);
+       }
        return i;
 }
 
@@ -1788,9 +1791,6 @@ PHP_FUNCTION(mssql_next_result)
                RETURN_FALSE;
        }
        else if (retvalue == NO_MORE_RESULTS || retvalue == NO_MORE_RPC_RESULTS) {
-               if (result->statement) {
-                       _mssql_get_sp_result(result->mssql_ptr, result->statement TSRMLS_CC);
-               }
                RETURN_FALSE;
        }
        else {
@@ -2120,11 +2120,8 @@ PHP_FUNCTION(mssql_execute)
                                result->num_fields = num_fields;
 
                                result->fields = (mssql_field *) emalloc(sizeof(mssql_field)*num_fields);
-                               result->num_rows = _mssql_fetch_batch(mssql_ptr, result, retvalue TSRMLS_CC);
                                result->statement = statement;
-                       }
-                       else {
-                               _mssql_get_sp_result(mssql_ptr, statement TSRMLS_CC);
+                               result->num_rows = _mssql_fetch_batch(mssql_ptr, result, retvalue TSRMLS_CC);
                        }
                }
        }