从PHP 5.3版PDO_MYSQL开始,已对驱动程序进行了补充PDO_MYSQLND。它引入了对多个查询的支持。
但是,如果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) ); 这将返回第二个查询的结果。
这是一个有点奇怪的实现。如果多查询语句仅将两个结果集返回在一个数组下,那肯定会更容易。但是,优点是此实现允许使用不同的FETCH样式获取每个查询。来源:stack overflow