【发布时间】:2014-03-26 16:06:11
【问题描述】:
我正在为返回多个结果集的 MYSQL (5.5.35) 存储过程而苦苦挣扎,我想知道是否有人可以解释出了什么问题。 SQL如下
SELECT 't1' as tableName, tbl1.* FROM table1 tbl1;
SELECT 't2' as tableName, tbl2.* FROM table2 tbl2;
SELECT 't3' as tableName, tbl3.* FROM table3 tbl3;
SELECT 't4' as tableName, tbl4.* FROM table4 tbl4;
SELECT 't5' as tableName, tbl5.* FROM table5 tbl5;
SELECT 't6' as tableName, tbl6.* FROM table6 tbl6;
然后我有一些 PHP 可以做到这一点......
$sth =$dbh->prepare('CALL getAllRecords()');
$sth->execute();
$i = 1;
do {
echo "<h3>$i Set</h3>";
$i++;
$rows = $sth->fetchAll();
} while ($sth->nextRowset());
人们会期望在浏览器中看到以下内容
1 Set
..
6 Set
但它会运行 7 个结果集,这又会导致异常
Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error'
我在这里错过了一些非常简单的东西吗?
【问题讨论】:
-
哪一行抛出异常? fetchAll?
-
是的,它是 fetchAll
-
我不认为自己是任何意义上的专家,但老实说,我看不出代码有任何明显错误。
-
@JoachimIsaksson 我也是,我一生都看不到为什么我要第七次点击 do/while 循环:( - 我能看到的唯一可能导致问题的是6 个数据集中的最后 2 个是空的,但即便如此,我只是测试 $rows,我仍然不应该进入该循环 7 次。
标签: php mysql pdo multiple-resultsets