PHP MySQL クエリの「コマンドが同期していない」エラーのトラブルシューティング
PHP と MySQL を使用している場合、「コマンドが同期していません。現在このコマンドを実行できません」というイライラするエラーが発生することがあります。これは通常、非同期の性質を適切に処理せずに複数の MySQL クエリを連続して実行した場合に発生します。 中心的な問題は、mysqli
クエリのデフォルトのバッファリングされていない動作にあります。
これに対処するには 2 つの効果的な解決策があります:
最初のクエリの結果を処理する: $con->query()
を使用して最初のクエリを実行し、結果を配列に保存します。 後続の操作はこの配列を反復処理して、各アクションが独立して実行されるようにする必要があります。
クエリ バッファリングを使用する: プリペアド ステートメント内で store_result()
メソッドを使用します。これにより、mysqli
はクエリ結果をバッファリングし、オンデマンドの行フェッチを回避して「コマンドが同期していない」問題を防ぎます。
クエリのバッファリングを示す例は次のとおりです。
<code class="language-php">$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ?%"; if ($numRecords = $con->prepare($countQuery)) { $numRecords->bind_param("s", $brand); $numRecords->execute(); $numRecords->store_result(); // Buffer the results $data = $con->query($countQuery); $rowcount = $data->num_rows; // Proceed with your application logic }</code>
大規模なデータセットを扱う場合、クエリ バッファリングを有効にするとメモリ消費量が増加する可能性があることに注意してください。 データ量とアプリケーションの要件に最適な方法を選択してください。
以上がPHP MySQL クエリの「コマンドが同期していない」エラーを修正する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。