13

PHP バージョン 5.3 の時点で、PDO_MYSQLドライバーは に置き換えられましたPDO_MYSQLND。複数のクエリのサポートが導入されました。

SELECTただし、複数のクエリが渡された場合に両方の結果セットを取得する方法がわかりません。両方のクエリが実行されました。2 番目のクエリが単にダンプされたわけではありません。

$db->query("SELECT 1; SELECT 2;")->fetchAll(PDO::FETCH_ASSOC);

戻り値:

array(1) {
  [0]=>
  array(1) {
    [1]=>
    string(1) "1"
  }
}
4

1 に答える 1

24

を使用する必要があることがわかりましたPDOStatement::nextRowset

$stmt   = $db->query("SELECT 1; SELECT 2;");
$stmt->nextRowset();
var_dump( $stmt->fetchAll(PDO::FETCH_ASSOC) );

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

少し変わった実装です。マルチクエリステートメントが両方の結果セットを 1 つの配列で返すだけであれば、確かに簡単です。ただし、この実装の利点は、さまざまなFETCH スタイルを使用してすべてのクエリをフェッチできることです。

于 2012-06-30T05:27:46.250 に答える