ホームページ >バックエンド開発 >PHPチュートリアル >PHP MySQL クエリの「コマンドが同期していない」エラーを修正する方法?

PHP MySQL クエリの「コマンドが同期していない」エラーを修正する方法?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-19 10:25:10385ブラウズ

How to Fix

コマンドが同期していない: PHP の問題を解決する

mysqli を使用して PHP で複数の MySQL クエリを操作すると、次のエラーが発生する場合があります。 : 「コマンドが同期していません。現在、このコマンドを実行できません。」このエラーは、バッファリングされていないクエリの使用が原因で発生します。つまり、後続のクエリを実行するには、クエリの結果を順番に処理する必要があります。

提供されているコード スニペットでは、クエリを実行して、 LIKE 句に基づくテーブル内のレコードの数 ($numRecords)。ただし、$data 変数はまだ同期していない前のクエリの結果を参照しています。

この問題を解決するには、2 つのオプションがあります:

  1. 結果配列を取得します:

実行後$numRecords->execute()、$data = $numRecords->get_result() を使用して結果を配列にフェッチします。これにより、クエリの結果が保存され、他のクエリの実行を続行できるようになります。

  1. Store_result() を使用します:

store_result( ) 実行後のステートメント オブジェクトのメソッド ($numRecords->store_result())。これにより、結果をバッファするように mysqli に指示され、同期エラーが発生することなく後続のクエリを実行できるようになります。

get_result() メソッドを使用した変更されたコード スニペットは次のとおりです。

$con->query("SET NAMES 'utf8'");
$brand ="o";
$countQuery = "SELECT ARTICLE_NO FROM AUCTIONS WHERE upper(ARTICLE_NAME) LIKE % ? %";
if ($numRecords = $con->prepare($countQuery)) {
    $numRecords->bind_param("s", $brand);
    $numRecords->execute();
    
    // Fetch the result array into $data
    $data = $numRecords->get_result();
    $rowcount = mysqli_num_rows($data);
    $rows = getRowsByArticleSearch("test", "Auctions", " ");
    $last = ceil($rowcount/$page_rows);
} else {
    print_r($con->error);
}

注コマンド非同期エラーは、クエリ以外のコマンド (INSERT、UPDATE など) を実行してからクエリを実行しようとした場合にも発生する可能性があります。最初に接続を閉じたり、クエリ以外の結果を取得したりせずに、同じテーブルからデータを取得します。後続のクエリを実行する前に、接続を閉じているか、前のクエリの結果を処理していることを確認してください。

以上がPHP MySQL クエリの「コマンドが同期していない」エラーを修正する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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