エラー: MySQLi の使用中に「コマンドが同期していません」
問題:
複数の MySQLi クエリを同時に実行しようとすると、「コマンドが同期していません」エラーが発生します。ネストされたクエリは階層データを取得します。
原因:
MySQL では、進行中のクエリの行が残っている間は新しいクエリを実行できません。
解決策:
オプション 1: mysqli_store_result() を使用します
$result = mysqli_store_result($db); // Execute subsequent queries
これにより、行がバッファリングされます。 MySQL クライアント。複数のクエリを実行可能
オプション 2: mysqli_result::fetch_all() を使用します
$result = mysqli_query($db, $sql); $data = mysqli_fetch_all($result, MYSQLI_ASSOC); // Execute subsequent queries
これにより、結果セット全体が配列として返され、複数のクエリを実行できます。
考慮事項:
ネストされたクエリは、階層的なデータ ストレージを示します。代替データ モデルを検討するか、mysqli_next_result().
CodeIgnitor 実装:
// Edit code in system/database/drivers/mysqli/mysqli_driver.php protected function _execute($sql) { $results = $this->conn_id->query($this->_prep_query($sql)); @mysqli_next_result($this->conn_id); // Fix 'command out of sync' error return $results; }
以上がネストされたクエリを使用するときに MySQLi で発生する「コマンドが同期していない」エラーを解決するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。