7

タイトルに記載されているエラーのドキュメントには、

コマンドが同期していない場合。現在、クライアント コードでこのコマンドを実行することはできません。クライアント関数を間違った順序で呼び出しています。

これは、たとえば、mysql_use_result() を使用していて、mysql_free_result() を呼び出す前に新しいクエリを実行しようとした場合に発生する可能性があります。また、間に mysql_use_result() または mysql_store_result() を呼び出さずにデータを返す 2 つのクエリを実行しようとした場合にも発生する可能性があります。

ここから: http://dev.mysql.com/doc/refman/5.0/en/commands-out-of-sync.html

しかし、最初のクエリでは、mysql データベースからデータを取得していません。挿入しているだけです。2番目のクエリでは、データベースからデータを取得しています。

これが私のコードです

$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)); 
}

ここで Error が返されCommands out of sync; you can't run this command nowます。この状況が理解できない

注: クエリに問題があります。同じクエリを PHPMyAdmin に対して直接実行したところ、問題なく動作しました。

4

1 に答える 1

14

クエリから保​​留中の結果セットがあります:

mysqli_multi_query($接続、$クエリ);

次のクエリに進む前に、結果を使用/保存する必要があります。

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

もう 1 つの方法は、接続を閉じてからもう一度開始することです。

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

それはすべてあなたの要件に依存します。

于 2013-05-02T14:27:13.127 に答える