如何使用PDO获取多个结果集??

Aimis 2012-08-21 03:14:50
为什么总是只能获取第一个结果集?


存储过程:

CREATE PROCEDURE [dbo].[P__getBothData]
as
set nocount on

select * from _T1 where sid = 3
select top 2 * from _User_Co where coName like '%北京%' order by CompanyId

set nocount off


PHP:

try {
$pdo = new PDO('mssql:host=localhost;dbname='.$db, $user, $pwd);
$stmt=$pdo->prepare('exec P__getBothData');
$stmt->execute();
$i = 1;
do{
$rowset = $stmt->fetchAll(PDO::FETCH_NUM);
if($rowset){
printResultSet($rowset, $i);
}
$i++;
} while ($stmt->nextRowset());
} catch (PDOException $e) {
print "Error!: " . $e->getMessage() . "<br/>";
die();
}
function printResultSet(&$rowset, $i) {
print_r($rowset);
echo '<br>';
}

...全文
254 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
码无边 2012-08-22
  • 打赏
  • 举报
回复
楼主用的数据库是sqlserver吧!
coder 2012-08-21
  • 打赏
  • 举报
回复
好像是不支持获取多个结果集。试着把功能分开处理吧
xuzuning 2012-08-21
  • 打赏
  • 举报
回复
这样也一样
$stmt=$pdo->prepare('call P__getBothData()');
$stmt->execute();

一般的说 exec 是执行过程, call 是调用函数
通常只有调用才有返回值

而执行若有返回参数则需要有声明
xuzuning 2012-08-21
  • 打赏
  • 举报
回复
$stmt=$pdo->prepare('exec P__getBothData');
$stmt->execute();
改为
$stmt=$pdo->query('call P__getBothData()');
Aimis 2012-08-21
  • 打赏
  • 举报
回复
呼叫唠叨大侠?

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧