mirror of
https://github.com/php/php-src.git
synced 2024-09-26 20:37:29 +00:00
Fix for the failing mysql_stmt_execute() test. Data was cleaned after
stmt_reset() but it should stay and be freed as later as next stmt_execute()
This commit is contained in:
parent
3da36d58dc
commit
37234bb393
@ -588,7 +588,7 @@ MYSQLND_METHOD(mysqlnd_stmt, execute)(MYSQLND_STMT * const stmt TSRMLS_DC)
|
|||||||
SET_ERROR_AFF_ROWS(stmt);
|
SET_ERROR_AFF_ROWS(stmt);
|
||||||
SET_ERROR_AFF_ROWS(stmt->conn);
|
SET_ERROR_AFF_ROWS(stmt->conn);
|
||||||
|
|
||||||
if (stmt->result && stmt->state > MYSQLND_STMT_PREPARED && stmt->field_count) {
|
if (stmt->result && stmt->state >= MYSQLND_STMT_PREPARED && stmt->field_count) {
|
||||||
/*
|
/*
|
||||||
We don need to copy the data from the buffers which we will clean.
|
We don need to copy the data from the buffers which we will clean.
|
||||||
Because it has already been copied. See
|
Because it has already been copied. See
|
||||||
@ -1192,11 +1192,11 @@ MYSQLND_METHOD(mysqlnd_stmt, reset)(MYSQLND_STMT * const stmt TSRMLS_DC)
|
|||||||
stmt->result->m.skip_result(stmt->result TSRMLS_CC);
|
stmt->result->m.skip_result(stmt->result TSRMLS_CC);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Now the line should be free, if it wasn't */
|
/*
|
||||||
|
Don't free now, let the result be usable. When the stmt will again be
|
||||||
DBG_INF("freeing result");
|
executed then the result set will be cleaned, the bound variables will
|
||||||
/* free_result() doesn't actually free stmt->result but only the buffers */
|
be separated before that.
|
||||||
stmt->m->free_result(stmt TSRMLS_CC);
|
*/
|
||||||
|
|
||||||
int4store(cmd_buf, stmt->stmt_id);
|
int4store(cmd_buf, stmt->stmt_id);
|
||||||
if (CONN_GET_STATE(conn) == CONN_READY &&
|
if (CONN_GET_STATE(conn) == CONN_READY &&
|
||||||
|
Loading…
Reference in New Issue
Block a user