命令不同步,MySQL 准备语句问题
您在尝试运行两个 MySQL 时遇到错误“命令不同步”使用 mysqli 和 PHP 进行查询。当正在进行多个无缓冲查询并且命令未按正确顺序执行时,会出现此错误。
在您的代码中,您准备了两个查询:$countQuery 和 $recordsQuery。但是,默认情况下,mysqli 对准备好的语句使用无缓冲查询。这意味着必须在执行下一个查询之前获取每个查询的结果。
错误原因
您的代码尝试在 $ 循环内执行 $recordsQuery计数查询。由于未获取 $countQuery 的结果,mysqli 将其视为无缓冲查询并继续无序执行 $recordsQuery。这会导致“命令不同步”错误。
解决方案
要解决此问题,您有两个选择:
store_result()的示例
if ($numRecords = $con->prepare($countQuery)) { $numRecords->bind_param("s", $brand); $numRecords->execute(); $numRecords->store_result(); // Buffer the query results $data = $con->query($countQuery) or die(print_r($con->error)); $rowcount = $data->num_rows; // Continue with your code...
注意:
如果您在 $recordsQuery 之前使用 $countQuery 来计算行数,请确保释放结果在执行 $recordsQuery 之前使用 $numRecords->free_result() 的 $countQuery。如果您使用 store_result,则不需要此操作。
以上是为什么我在 PHP 中使用 MySQL 准备语句时会出现'命令不同步”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!