ホームページ >バックエンド開発 >PHPチュートリアル >PHP MySQLi コードで「コマンドが同期していない」エラーが発生するのはなぜですか? それらを修正するにはどうすればよいですか?

PHP MySQLi コードで「コマンドが同期していない」エラーが発生するのはなぜですか? それらを修正するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-20 11:06:09336ブラウズ

Why Do I Get

コマンドが同期していない: 原因と解決策の詳細

mysqli 経由で MySQL クエリを利用する PHP コードを実行しようとすると、次のような問題が発生する可能性があります。 「コマンドが同期していません。現在このコマンドを実行できません。」というエラーが発生します。このエラーは、データベース クエリの順次実行間の競合を示します。

提供された PHP コードでは、mysqli によるプリペアド ステートメントのバッファリングされていないクエリの使用が原因で、この問題が発生します。これは、常に最後に実行されたクエリの結果のみが利用可能であることを意味します。

このエラーを解決するには、次の 2 つのアプローチを取ることができます。

  1. ストア結果を使用する: プリペアドステートメントの実行後に $stmt->store_result() を呼び出すと、そのクエリの結果がバッファリングされます。これにより、最初のクエリの結果に影響を与えることなく、後続のクエリを実行できるようになります。
  2. 結果を配列にフェッチ: あるいは、$stmt-> を使用して、最初のクエリの結果を配列にフェッチすることもできます。 ;fetch_all()。これにより、データがメモリにプリロードされ、接続が解放されて他のクエリを実行できるようになります。

提供されたコードでは、最初のクエリの後に $stmt->store_result() を使用して結果をバッファできます。

if ($numRecords = $con->prepare($countQuery)) {
    $numRecords->bind_param("s", $brand);
    $numRecords->execute();
    $numRecords->store_result();
    $data = $con->query($countQuery) or die(print_r($con->error));
    $rowcount = $data->num_rows;
    ...
}

これらの解決策のいずれかを実装すると、コマンドが同期されなくなり、PHP コードが実行されるようになります。成功しました。

以上がPHP MySQLi コードで「コマンドが同期していない」エラーが発生するのはなぜですか? それらを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。