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