php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #80837 Calling stmt_store_result after fetch doesn't throw an error
Submitted: 2021-03-05 21:35 UTC Modified: -
From: [email protected] Assigned:
Status: Closed Package: MySQLi related
PHP Version: master-Git-2021-03-05 (Git) OS:
Private report: No CVE-ID: None
 [2021-03-05 21:35 UTC] [email protected]
Description:
------------
Calling stmt_store_result when in the middle of manual fetch cycle should throw an OOS error. However, mysqlnd sets the error in conn property which means mysqli will not throw it. 

Test script:
---------------
<?php

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'user', 'password', 'test');
$mysqli->set_charset('utf8mb4'); // always set the charset

$statement = $mysqli->prepare("SELECT b FROM a");
$statement->execute();
$statement->bind_result($name);
$statement->fetch();
$statement->store_result();
var_dump($mysqli->error, $statement->error);
echo $statement->num_rows();

Expected result:
----------------
Fatal error: Uncaught mysqli_sql_exception: Commands out of sync; you can't run this command now

Actual result:
--------------
string(52) "Commands out of sync; you can't run this command now"
string(0) ""
0

Patches

Pull Requests

Pull requests:

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2021-03-05 22:01 UTC] [email protected]
The following pull request has been associated:

Patch Name: Fix bug #80837
On GitHub:  https://github.com/php/php-src/pull/6755
Patch:      https://github.com/php/php-src/pull/6755.patch
 [2021-03-15 13:39 UTC] [email protected]
-Status: Open +Status: Closed
 
PHP Copyright © 2001-2025 The PHP Group
All rights reserved.
Last updated: Mon Jun 09 05:01:27 2025 UTC