ホームページ > バックエンド開発 > PHPチュートリアル > MySQLi の「コマンドが同期していない」エラーを解決するにはどうすればよいですか?

MySQLi の「コマンドが同期していない」エラーを解決するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-02 07:57:09
オリジナル
759 人が閲覧しました

How to Resolve the

MySQLi でのコマンドの同期エラー

複数の MySQLi クエリを含むコードで、「コマンドが同期していない」エラーが発生します。このエラーは、進行中のクエリから取得する行がまだある間は、MySQL クライアントが新しいクエリの実行を禁止しているために発生します。

問題の理解

MySQL クライアントクエリが順番に実行されることを保証する厳密なプロトコルを実装します。複数の結果セットを返すネストされたクエリまたはプロシージャがある場合、プロトコルは、次のクエリを実行する前に結果セットからすべての行をフェッチするように指示します。ただし、あなたの場合は、前のクエリからフェッチする行がまだある間に新しいクエリを実行しようとしています。

解決策

主な解決策は 2 つあります。問題を解決するためのアプローチ:

  1. 結果のプリフェッチ: を使用しますmysqli_store_result() または mysqli_result::fetch_all() を使用して、MySQL クライアントの外部クエリの結果をバッファリングします。これにより、エラーが発生することなくさらにクエリを実行できるようになります。
  2. 複数の結果セットの処理: ストアド プロシージャが複数の結果セットを返す場合、mysqli_multi_query() を使用し、mysqli_next_result までループする必要があります。 () はそれ以上の結果がないことを示します。これにより、MySQL プロトコルに準拠することが保証されます。

代替データ ストレージに関する考慮事項

階層データの場合、クエリを簡略化するために、別の方法でデータを保存することを検討することもできます。たとえば、隣接リストやネストされたセット モデルを使用できます。

追加メモ

CodeIgnitor 3.0.3 では、「コマンドが同期していません」エラーを解決できます。 _execute() メソッドを変更することでシステム/データベース/ドライバー/mysqli/mysqli_driver.php.

以上がMySQLi の「コマンドが同期していない」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート