ホームページ > データベース > mysql チュートリアル > 単一の PDO クエリから複数の結果セットを取得するにはどうすればよいですか?

単一の PDO クエリから複数の結果セットを取得するにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-17 12:06:02
オリジナル
935 人が閲覧しました

How to Retrieve Multiple Result Sets from a Single PDO Query?

PDO 複数のクエリ: 複数の結果セットの取得

PHP 5.3 では、PDO_MYSQLND ドライバーに複数のクエリのサポートが導入され、複数の SELECT を実行できるようになりました。 1 回の呼び出しでクエリを実行できます。ただし、これらのクエリからの結果セットの取得は混乱を招く可能性があります。

次のクエリについて考えてみましょう。

$db->query("SELECT 1; SELECT 2;")
ログイン後にコピー

このクエリは 2 つの SELECT クエリを実行します。次に、 fetchAll(PDO::FETCH_ASSOC) メソッドを使用して結果セットを取得します。ただし、これは最初のクエリの結果のみを返します。

array(1) {
  [0] =>
  array(1) {
    [1] =>
    string(1) "1"
  }
}
ログイン後にコピー

Using PDOStatement::nextRowset

2 番目のクエリの結果を取得するには、以下を行う必要があります。 PDOStatement::nextRowset メソッドを使用します。このメソッドを使用すると、ステートメント カーソルを次の結果セットに移動できます:

$stmt = $db->query("SELECT 1; SELECT 2;");
$stmt->nextRowset();
var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
ログイン後にコピー

これにより、2 番目のクエリの結果が返されます:

array(1) {
  [0] =>
  array(1) {
    [2] =>
    string(1) "2"
  }
}
ログイン後にコピー

複数の FETCH スタイル

PDOStatement::nextRowset を使用する利点は、異なる FETCH スタイルを使用して各クエリをフェッチできることです。例:

$stmt = $db->query("SELECT 1; SELECT 'a';");
$stmt->nextRowset();
$first = $stmt->fetchColumn(); // fetch first column of second query
$stmt->nextRowset();
$second = $stmt->fetch(PDO::FETCH_ASSOC); // fetch associative array of third query
ログイン後にコピー

これにより、複数のクエリを操作する際の柔軟性が高まります。

以上が単一の PDO クエリから複数の結果セットを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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