2013-05-02 34 views
6

在标题中提到的错误的文件说,为什么我收到错误“命令不同步,你无法运行此命令现在”

如果你得到命令不同步;您现在无法运行此命令在 您的客户端代码中,您按错误顺序调用客户端功能。

例如,如果您正在使用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

但在第一个查询我不是从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执行相同的查询,并且工作正常。

回答

13

有从查询未决结果集:

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"); 

这一切都取决于你的需求。

+2

为什么我需要用mysqli而不是mysql来做到这一点? – Fearghal 2014-02-19 23:53:49

+0

自PHP版本5.5.0起,mysql_ *函数已被弃用。 – LightYearsBehind 2014-02-21 01:02:23

相关问题