PDOStatement::nextRowset
を使用する必要があることがわかりました 。
$stmt = $db->query("SELECT 1; SELECT 2;");
$stmt->nextRowset();
var_dump( $stmt->fetchAll(PDO::FETCH_ASSOC) );
これにより、2番目のクエリの結果が返されます。
それは少し奇妙な実装です。マルチクエリステートメントが1つの配列の下で両方の結果セットを返すだけの場合は確かに簡単です。ただし、この実装では、さまざまなFETCHスタイルを使用してすべてのクエリをフェッチできるという利点があります。 。