PDO を使用した複数のクエリの実行
PHP バージョン 5.3 では、PDO_MYSQL ドライバーが PDO_MYSQLND に置き換えられ、複数のクエリのサポートが導入されました。ただし、これらのクエリから複数の結果セットを取得すると、混乱が生じる可能性があります。
課題:
PDO_MYSQLND の query() メソッドを使用して複数の SELECT クエリを実行すると、最初の結果セットのみが返されます。例:
$db->query("SELECT 1; SELECT 2;")->fetchAll(PDO::FETCH_ASSOC);
このコードは、最初のクエリの結果のみを返します。
array(1) { [0]=> array(1) { [1]=> string(1) "1" } }
解決策:
後続の結果セットを取得するには、PDOStatement::nextRowset() メソッドを使用する必要があります。
$stmt = $db->query("SELECT 1; SELECT 2;"); $stmt->nextRowset(); var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
これにより、2 番目のクエリの結果が返されます。
実装:
複数のクエリが 1 つの配列ですべての結果を返した方が便利なので、この実装は少し特殊に見えるかもしれません。ただし、この設計では、異なるフェッチ スタイルを使用して各結果セットをフェッチできます。
以上がPDO_MYSQLND を使用して複数のクエリから複数の結果セットを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。