From 086f16b79a128c4dcd960f24e046dbd2ad28bea2 Mon Sep 17 00:00:00 2001 From: Dharman Date: Fri, 5 Mar 2021 21:45:27 +0000 Subject: [PATCH 1/2] Fix bug #80837 --- ext/mysqli/tests/bug80837.phpt | 38 ++++++++++++++++++++++++++++++++++ ext/mysqlnd/mysqlnd_ps.c | 2 +- 2 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 ext/mysqli/tests/bug80837.phpt diff --git a/ext/mysqli/tests/bug80837.phpt b/ext/mysqli/tests/bug80837.phpt new file mode 100644 index 0000000000000..824d40731ed58 --- /dev/null +++ b/ext/mysqli/tests/bug80837.phpt @@ -0,0 +1,38 @@ +--TEST-- +Bug #80837 Calling stmt_store_result after fetch doesn't throw an error +--SKIPIF-- + +--FILE-- +query('DROP TABLE IF EXISTS test'); +$mysqli->query('CREATE TABLE test (b int)'); +$mysqli->query('INSERT INTO test VALUES (1),(2),(3)'); + +$statement = $mysqli->prepare("SELECT b FROM test"); +$statement->execute(); +$statement->bind_result($name); +$statement->fetch(); +try { + $statement->store_result(); +} catch (mysqli_sql_exception $e) { + echo $e->getMessage(); +} + +$mysqli->close(); + +?> +--CLEAN-- + +--EXPECTF-- +Commands out of sync; you can't run this command now diff --git a/ext/mysqlnd/mysqlnd_ps.c b/ext/mysqlnd/mysqlnd_ps.c index 12aace6ec27e1..ce0ad01c8aa84 100644 --- a/ext/mysqlnd/mysqlnd_ps.c +++ b/ext/mysqlnd/mysqlnd_ps.c @@ -92,7 +92,7 @@ MYSQLND_METHOD(mysqlnd_stmt, store_result)(MYSQLND_STMT * const s) /* Nothing to store for UPSERT/LOAD DATA*/ if (!mysqlnd_stmt_check_state(stmt)) { - SET_CLIENT_ERROR(conn->error_info, CR_COMMANDS_OUT_OF_SYNC, UNKNOWN_SQLSTATE, mysqlnd_out_of_sync); + SET_CLIENT_ERROR(stmt->error_info, CR_COMMANDS_OUT_OF_SYNC, UNKNOWN_SQLSTATE, mysqlnd_out_of_sync); DBG_RETURN(NULL); } From 48a3ca36a8e0c34f41fc2c8112f205904f9c7a7e Mon Sep 17 00:00:00 2001 From: Dharman Date: Mon, 15 Mar 2021 13:04:02 +0000 Subject: [PATCH 2/2] Tidy up the test case --- ext/mysqli/tests/bug80837.phpt | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ext/mysqli/tests/bug80837.phpt b/ext/mysqli/tests/bug80837.phpt index 824d40731ed58..71e31aa31bbe4 100644 --- a/ext/mysqli/tests/bug80837.phpt +++ b/ext/mysqli/tests/bug80837.phpt @@ -1,15 +1,15 @@ --TEST-- -Bug #80837 Calling stmt_store_result after fetch doesn't throw an error +Bug #80837 Calling stmt_store_result after fetch doesn't throw an error --SKIPIF-- --FILE-- close(); ?> --CLEAN-- --EXPECTF-- Commands out of sync; you can't run this command now