コマンドが同期していない: PHP の問題を解決する
mysqli を使用して PHP で複数の MySQL クエリを操作すると、次のエラーが発生する場合があります。 : 「コマンドが同期していません。現在、このコマンドを実行できません。」このエラーは、バッファリングされていないクエリの使用が原因で発生します。つまり、後続のクエリを実行するには、クエリの結果を順番に処理する必要があります。
提供されているコード スニペットでは、クエリを実行して、 LIKE 句に基づくテーブル内のレコードの数 ($numRecords)。ただし、$data 変数はまだ同期していない前のクエリの結果を参照しています。
この問題を解決するには、2 つのオプションがあります:
実行後$numRecords->execute()、$data = $numRecords->get_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 サイトの他の関連記事を参照してください。