为什么我收到错误“命令不同步;您现在无法运行此命令”

时间:2013-05-02 13:43:17

标签: php mysqli mysqli-multi-query

标题中提到的错误文档

  

如果命令不同步;您现在无法运行此命令   您的客户端代码,您以错误的顺序调用客户端函数。

     

例如,如果您使用的是mysql_use_result()和,则会发生这种情况   尝试在调用mysql_free_result()之前执行新查询。   如果您尝试执行两个返回数据的查询,也会发生这种情况   无需在中间调用mysql_use_result()或mysql_store_result()。

从这里开始:http://dev.mysql.com/doc/refman/5.0/en/commands-out-of-sync.html

但是在First Query中我没有从mysql数据库中获取任何数据,我只是插入。在第二个查询中,我从数据库中获取数据。

这是我的代码

$connection = mysqli_connect("localhost","username","password","tbl_msgs");
if(mysqli_connect_errno($connection))
{
    die("Failed to connect to MySQL: " . mysqli_connect_error());
}
$query = "INSERT INTO users (total_comments, total_views) 
          VALUES ({$total_comments}, {$total_views});";

$query .= "INSERT INTO msgs (notifications) VALUES ({$notifications})";

mysqli_multi_query($connection,$query);

至于这一步,每件事情都很好。但是当我执行以下查询时它会给出错误

$select_query = "SELECT * FROM msgs WHERE msg_id = {$msg_id}";

$result_set = mysqli_query($connection,$select_query);

if(!$result_set) {
    die(mysqli_error($connection)); 
}

这里给出错误Commands out of sync; you can't run this command now。我无法理解这种情况

注意:查询中有任何问题,我已经直接向PHPMyAdmin执行了相同的查询,并且工作正常。

1 个答案:

答案 0 :(得分:14)

查询中有待处理的结果集:

  

mysqli_multi_query($连接,$查询);

您需要先使用/存储结果,然后才能继续下一个查询: 由于您看起来并不真正关心第一个结果集,请在多个查询之后执行此操作..

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

另一种方法是关闭连接并再次启动它。

mysqli_close($connection);
$connection = mysqli_connect("localhost","username","password","tbl_msgs");

这完全取决于您的要求。