ホームページ >データベース >mysql チュートリアル >PHP で複数の MySQL クエリを実行すると「コマンドが同期していません」エラーが発生するのはなぜですか?

PHP で複数の MySQL クエリを実行すると「コマンドが同期していません」エラーが発生するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-23 00:51:09334ブラウズ

Why Am I Getting a

PHP の「コマンドが同期していません」エラー

mysqli を使用して複数の MySQL クエリを実行すると、「コマンドが同期していません。現在このコマンドを実行できません」エラーが発生する場合があります。このエラーは、mysqli がデフォルトで非バッファー クエリを使用するために発生します。つまり、後続のクエリを実行する前に最初のクエリの結果を取得する必要があります。

エラーの理由

提供された PHP コードでは、2 つの MySQL クエリが実行されています:

  1. $data = $con->query($countQuery)
  2. $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>

その他の指示

  • エラー「near '% ? %'」は、$countQuery クエリに構文エラーがあることを示します。クエリが正しく構築されていることを確認してください。
  • 複数のクエリを同時に実行する必要がある場合は、mysqli::multi_query() メソッドの使用を検討してください。このメソッドは、バッファリングと同期を自動的に処理します。

以上がPHP で複数の MySQL クエリを実行すると「コマンドが同期していません」エラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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