PDO 多個查詢:檢索多個結果集
PHP 5.3 在PDO_MYSQLND 驅動程式中引入了對多個查詢的支持,允許您執行多個SELECT一次呼叫中的查詢。但是,從這些查詢中檢索結果集可能會令人困惑。
考慮以下查詢:
$db->query("SELECT 1; SELECT 2;")
此查詢執行兩個 SELECT 查詢。然後使用 fetchAll(PDO::FETCH_ASSOC) 方法檢索結果集。但是,這只會傳回第一個查詢的結果:
array(1) { [0] => array(1) { [1] => string(1) "1" } }
使用PDOStatement::nextRowset
要擷取第二個查詢的結果,您需要使用PDOStatement::nextRowset 方法。此方法可讓您將語句遊標移到下一個結果集:
$stmt = $db->query("SELECT 1; SELECT 2;"); $stmt->nextRowset(); var_dump($stmt->fetchAll(PDO::FETCH_ASSOC));
這將傳回第二個查詢的結果:
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中文網其他相關文章!