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中文网其他相关文章!