MySQL: コマンドが同期していないエラー
問題:
ユーザーに「コマンド」が発生する同期していません。複数のコマンドを実行しようとすると、「現在このコマンドを実行できません」というエラーが発生します。 MySQL は、mysqli を使用して順次クエリを実行します。
原因:
このエラーは、mysqli がプリペアド ステートメントに対してデフォルトでバッファなしのクエリを使用するために発生します。これは、次のクエリを実行する前に最初のクエリの結果を取得する必要があることを意味します。
解決策:
この問題を解決するには 2 つの方法があります:
方法 1: 結果をArray
最初のクエリの結果を配列にフェッチし、それをループします。このアプローチには次の手順が含まれます:
方法 2: クエリをバッファリングします
バッファリングするように mysqli を構成しますmysqli_stmt_store_result() を使用したクエリ。このアプローチには次の手順が含まれます:
実装:
たとえば、提供されたコードでメソッド 2 を実装するには:
... $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 ... } ...
追加注:
以上がMySQL の「コマンドが同期していない」エラー: mysqli でのシーケンシャル クエリの問題を解決するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。