首页 >数据库 >mysql教程 >为什么我的 MySQLi PHP 代码中出现'命令不同步”错误?

为什么我的 MySQLi PHP 代码中出现'命令不同步”错误?

DDD
DDD原创
2025-01-23 00:57:12184浏览

Why Am I Getting the

PHP MySQL 错误:命令不同步

你的 PHP 代码尝试使用 mysqli 执行两个 MySQL 查询,但遇到错误 "Commands out of sync; you can't run this command now"。 这是由于 mysqli 预处理语句查询默认情况下是非缓冲模式导致的。

错误根源

mysqli 默认以非缓冲模式执行查询,这意味着结果集不会存储在内存中,而是直接流式传输到客户端。 由于你使用了两个查询,第一个查询执行并流式传输结果集。 然而,在从第一个查询获取结果之前,你尝试执行第二个查询。 这会导致“命令不同步”错误,因为 mysqli 要求你在执行第二个查询之前获取第一个查询的结果。

解决方案:缓冲查询

要解决此问题,你需要缓冲查询。 你可以使用预处理语句对象的 store_result() 方法:

<code class="language-php">$numRecords->execute();
$numRecords->store_result();</code>

通过缓冲查询,mysqli 将第一个查询的结果集存储在内存中,允许你稍后获取它,而不会与第二个查询的执行冲突。

其他注意事项

在你的代码中,你还尝试在一个 foreach 循环内执行不同的查询:

<code class="language-php">$result = $con->query($recordsQuery);
$rows = array();
while($row = $result->fetch_assoc()) {
    $rows[] = $row;
}</code>

这实际上没有必要,因为你已经将查询的结果存储在名为 $rows 的变量中。 你可以直接在循环中使用该变量来访问已获取的行。

通过实施这些更改,你应该能够执行 MySQL 查询,而不会遇到“命令不同步”错误。

以上是为什么我的 MySQLi PHP 代码中出现'命令不同步”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn