命令不同步:解决 PHP 中的问题
在 PHP 中使用 mysqli 处理多个 MySQL 查询时,您可能会遇到以下错误:“命令不同步;您现在无法运行此命令。”出现此错误的原因是使用无缓冲查询,这意味着必须按顺序处理查询结果才能执行后续查询。
在提供的代码片段中,您执行一个查询来确定基于 LIKE 子句的表中的记录数 ($numRecords)。但是,$data 变量仍然引用上一个查询的结果,这是不同步的。
要解决此问题,您有两个选择:
执行后$numRecords->execute(),使用 $data = $numRecords->get_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中文网其他相关文章!