首页 >后端开发 >php教程 >如何修复 PHP MySQL 查询中的'命令不同步”错误?

如何修复 PHP MySQL 查询中的'命令不同步”错误?

Susan Sarandon
Susan Sarandon原创
2024-12-19 10:25:10384浏览

How to Fix

命令不同步:解决 PHP 中的问题

在 PHP 中使用 mysqli 处理多个 MySQL 查询时,您可能会遇到以下错误:“命令不同步;您现在无法运行此命令。”出现此错误的原因是使用无缓冲查询,这意味着必须按顺序处理查询结果才能执行后续查询。

在提供的代码片段中,您执行一个查询来确定基于 LIKE 子句的表中的记录数 ($numRecords)。但是,$data 变量仍然引用上一个查询的结果,这是不同步的。

要解决此问题,您有两个选择:

  1. 获取结果数组:

执行后$numRecords->execute(),使用 $data = $numRecords->get_result() 将结果获取到数组中。这将存储查询的结果并允许您继续执行其他查询。

  1. 使用 store_result():

使用 store_result(执行后语句对象上的 ) 方法 ($numRecords->store_result())。这将指示 mysqli 缓冲结果,允许您执行后续查询而不会出现不同步错误。

这是使用 get_result() 方法修改的代码片段:

$con->query("SET NAMES 'utf8'");
$brand ="o";
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %";
if ($numRecords = $con->prepare($countQuery)) {
    $numRecords->bind_param("s", $brand);
    $numRecords->execute();
    
    // Fetch the result array into $data
    $data = $numRecords->get_result();
    $rowcount = mysqli_num_rows($data);
    $rows = getRowsByArticleSearch("test", "Auctions", " ");
    $last = ceil($rowcount/$page_rows);
} else {
    print_r($con->error);
}

注意如果您执行非查询(例如 INSERT、UPDATE),然后尝试执行从以下位置检索数据的查询,也可能会出现命令不同步错误:无需先关闭连接或获取非查询的结果即可访问同一个表。在执行后续查询之前,请确保您已关闭连接或处理了先前查询的结果。

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

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