首页 > 后端开发 > php教程 > MySQL'命令不同步”错误:如何解决 mysqli 的顺序查询问题?

MySQL'命令不同步”错误:如何解决 mysqli 的顺序查询问题?

Barbara Streisand
发布: 2025-01-04 13:13:08
原创
708 人浏览过

MySQL `Commands Out of Sync` Error: How to Resolve Sequential Query Issues with mysqli?

MySQL:命令不同步错误

问题:

用户遇到“命令尝试使用顺序执行多个 MySQL 查询时出现不同步;您现在无法运行此命令”错误mysqli.

原因:

出现此错误是因为 mysqli 默认对准备好的语句使用无缓冲查询。这意味着在执行下一个查询之前必须检索第一个查询的结果。

解决方案:

有两种方法可以解决此问题:

方法一:将结果取入数组

取将第一个查询的结果放入数组中并循环遍历它。此方法涉及以下步骤:

  1. 执行第一个查询。
  2. 使用 mysqli_fetch_all() 或 $stmt->fetch_all() 将所有行提取到数组中。
  3. 使用 mysqli_free_result() 释放结果或$stmt->free_result().
  4. 执行第二条查询。

方法二:缓冲查询

配置mysqli缓冲使用 mysqli_stmt_store_result() 的查询。此方法涉及以下步骤:

  1. 准备第一个查询。
  2. 执行查询。
  3. 调用 $stmt->store_result() 来缓冲结果.
  4. 执行第二个

实现:

例如,在您提供的代码中实现方法 2:

...
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %";
if ($numRecords = $con->prepare($countQuery)) {
    $numRecords->bind_param("s", $brand);
    $numRecords->execute();
    $numRecords->store_result(); // Buffer the results
    ...
}
...
登录后复制

其他备注:

  • 对于非准备语句(使用 mysqli_query()),默认行为是缓冲的。
  • 如果您在使用“SELECT *”查询时遇到错误,可能是由于创建了临时表而导致的,这可以导致查询顺序不一致。

以上是MySQL'命令不同步”错误:如何解决 mysqli 的顺序查询问题?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板