ホームページ >データベース >mysql チュートリアル >ネストされたクエリを使用するときに MySQLi で発生する「コマンドが同期していない」エラーを解決するにはどうすればよいですか?

ネストされたクエリを使用するときに MySQLi で発生する「コマンドが同期していない」エラーを解決するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-08 07:29:10570ブラウズ

How to Resolve the

エラー: 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;
}
を使用してストアド プロシージャからの複数の結果セットを処理するには、CodeIgnitor のようなフレームワークを使用することを検討してください。

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

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