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 サイトの他の関連記事を参照してください。