使用PDO 執行多個查詢
在PHP 版本5.3 中,PDO_MYSQL 驅動程式被替換為PDO_MY的支持。然而,從這些查詢中獲取多個結果集可能會令人困惑。
挑戰:
使用 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));
這將傳回第二個查詢的結果。
實作:
這個實作可能看起來有點特殊,因為它如果多個查詢傳回一個陣列下的所有結果會更方便。但是,這種設計允許使用不同的獲取樣式來獲取每個結果集。
以上是如何使用 PDO_MYSQLND 從多個查詢中擷取多個結果集?的詳細內容。更多資訊請關注PHP中文網其他相關文章!