summaryrefslogtreecommitdiff
path: root/ext/mysqlnd/mysqlnd_ps.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/mysqlnd/mysqlnd_ps.c')
-rw-r--r--ext/mysqlnd/mysqlnd_ps.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/ext/mysqlnd/mysqlnd_ps.c b/ext/mysqlnd/mysqlnd_ps.c
index 101d8c4b89..563c018ad6 100644
--- a/ext/mysqlnd/mysqlnd_ps.c
+++ b/ext/mysqlnd/mysqlnd_ps.c
@@ -1120,16 +1120,18 @@ MYSQLND_METHOD(mysqlnd_stmt, reset)(MYSQLND_STMT * const s TSRMLS_DC)
We have to call the appropriate use_result() or store_result() and
clean.
*/
- if (stmt->state == MYSQLND_STMT_WAITING_USE_OR_STORE) {
- DBG_INF("fetching result set header");
- stmt->default_rset_handler(s TSRMLS_CC);
- stmt->state = MYSQLND_STMT_USER_FETCHING;
- }
+ do {
+ if (stmt->state == MYSQLND_STMT_WAITING_USE_OR_STORE) {
+ DBG_INF("fetching result set header");
+ stmt->default_rset_handler(s TSRMLS_CC);
+ stmt->state = MYSQLND_STMT_USER_FETCHING;
+ }
- if (stmt->result) {
- DBG_INF("skipping result");
- stmt->result->m.skip_result(stmt->result TSRMLS_CC);
- }
+ if (stmt->result) {
+ DBG_INF("skipping result");
+ stmt->result->m.skip_result(stmt->result TSRMLS_CC);
+ }
+ } while (mysqlnd_stmt_more_results(s) && mysqlnd_stmt_next_result(s) == PASS);
/*
Don't free now, let the result be usable. When the stmt will again be