]> granicus.if.org Git - php/commitdiff
- Fixed bug #23682 (sybase_query() and multiple result sets: not returning first...
authorfoobar <sniper@php.net>
Thu, 28 Aug 2003 16:16:59 +0000 (16:16 +0000)
committerfoobar <sniper@php.net>
Thu, 28 Aug 2003 16:16:59 +0000 (16:16 +0000)
ext/sybase_ct/php_sybase_ct.c

index bbb6c1a313524922051116ffeae7c6976d816740..276586826b96e5d9bfe07968d073161971dc74eb 100644 (file)
@@ -1386,8 +1386,21 @@ static void php_sybase_query (INTERNAL_FUNCTION_PARAMETERS, int buffered)
                                        case CS_CURSOR_RESULT:
                                        case CS_PARAM_RESULT:
                                        case CS_ROW_RESULT:
-                                               /* Unexpected results, cancel them. */
+                                               if (status != Q_RESULT) {
+                                                       result = php_sybase_fetch_result_set(sybase_ptr, buffered, store);
+                                                       if (result == NULL) {
+                                                               ct_cancel(NULL, sybase_ptr->cmd, CS_CANCEL_ALL);
+                                                               sybase_ptr->dead = 1;
+                                                               RETURN_FALSE;
+                                                       }
+                                                       status = Q_RESULT;
+                                               } else {
+                                                       /* Unexpected results, cancel them. */
+                                                       ct_cancel(NULL, sybase_ptr->cmd, CS_CANCEL_CURRENT);
+                                               }
+                                               break;
                                        case CS_STATUS_RESULT:
+                                               /* Unexpected results, cancel them. */
                                                ct_cancel(NULL, sybase_ptr->cmd, CS_CANCEL_CURRENT);
                                                break;