PHP の「コマンドが同期していません」エラー
mysqli を使用して複数の MySQL クエリを実行すると、「コマンドが同期していません。現在このコマンドを実行できません」エラーが発生する場合があります。このエラーは、mysqli がデフォルトで非バッファー クエリを使用するために発生します。つまり、後続のクエリを実行する前に最初のクエリの結果を取得する必要があります。
エラーの理由
提供された PHP コードでは、2 つの MySQL クエリが実行されています:
$data = $con->query($countQuery)
$rows = getRowsByArticleSearch("test", "Auctions", " ")
このエラーは、最初のクエリの結果が取得される前に 2 番目のクエリが実行されたときに発生する可能性が高くなります。
解決策
この問題を解決するには 2 つの方法があります:
1. 最初のクエリの結果を取得します
mysqli_fetch_*()
メソッドを使用して、2 番目のクエリを実行する前に最初のクエリの結果を取得します。例:
<code class="language-php">$data = $con->query($countQuery); $rowcount = $data->num_rows;</code>
2. バッファリングされたクエリ
クエリ バッファリングを有効にするには、mysqli_stmt::store_result()
を使用します。これにより、mysqli は 2 番目のクエリを実行する前に最初のクエリの結果を保存します。
<code class="language-php">$numRecords->store_result();</code>
その他の指示
$countQuery
クエリに構文エラーがあることを示します。クエリが正しく構築されていることを確認してください。 mysqli::multi_query()
メソッドの使用を検討してください。このメソッドは、バッファリングと同期を自動的に処理します。 以上がPHP で複数の MySQL クエリを実行すると「コマンドが同期していません」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。