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中文网其他相关文章!