Php &引用;命令不同步;你可以';现在不要运行此命令";-由mysqli::multi_查询引起

Php &引用;命令不同步;你可以';现在不要运行此命令";-由mysqli::multi_查询引起,php,mysqli,mysqli-multi-query,Php,Mysqli,Mysqli Multi Query,我正在通过mysqli::multi_query运行多个删除操作,这会打乱行中的下一个查询。正在抛出以下错误 Error - SQLSTATE HY000. Sql error: Commands out of sync; you can't run this command now 我是否需要以某种方式清除多重查询,以便它不会干扰我的下一个查询?这个错误的原因是什么 这就是我运行多重查询的方式: function deleteSomeTables($args) { $sql = '

我正在通过
mysqli::multi_query
运行多个删除操作,这会打乱行中的下一个查询。正在抛出以下错误

Error - SQLSTATE HY000. 
Sql error: Commands out of sync; you can't run this command now
我是否需要以某种方式清除多重查询,以便它不会干扰我的下一个查询?这个错误的原因是什么

这就是我运行多重查询的方式:

function deleteSomeTables($args) {
    $sql = 'delete 1;delete another;';
    if ($database->multi_query($sql)) {
        return true;
    } else {
        return false;
    }
}
我在windows 7上使用最新版本的Xampp,使用的是“您正在启动查询”,但在继续之前,您需要处理这些查询的结果。描述了处理结果的各种方法。处理后,您将能够很好地执行其他查询

您遇到的错误消息实际上在页面上有更好的解释(不过请记住,在这个实例中,当您执行删除操作时,mysqli::query不会返回结果对象)


当然,您可以将多个查询更改为多个单查询,我不知道每种方法的优缺点。

这有助于我删除“命令不同步”错误:

do { 
    $mysqli_conn_obj->use_result(); 
}while( $mysqli_conn_obj->more_results() && $mysqli_conn_obj->next_result() );

在调用multi_query后添加此代码,它将使用结果集并解决错误。

Seva的代码很可能会解决您的问题,如果您使用像我这样的过程风格,请使用此代码

do {
  if ($result = mysqli_store_result($connect)) {
    mysqli_free_result($result);
  }
} while (mysqli_next_result($connect));

既然我没有得到任何返回,那么我如何清除查询呢。你没有告诉我任何我不知道的事情,比如
do{$mysqli->use_result();}while($mysqli->next_result())