如何从PHP中的存储过程循环多个结果集? [英] How to loop through multiple result sets from stored procedure in PHP?

查看:32
本文介绍了如何从PHP中的存储过程循环多个结果集?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

试图从 SQL Server 2008 中的存储过程 (SP) 获取 3 个结果集时,我有点发疯了.

Im slightly going out of my mind trying to get 3 result sets from a stored procedure (SP) in SQL server 2008.

存储过程:

CREATE PROCEDURE db_abbTest
AS
BEGIN
        SET NOCOUNT ON;

        SELECT 1
        SELECT 2
        SELECT 3
        RETURN 0
END
GO

PHP 代码:

<?php

$serverName = "server";
$connectionInfo = array("UID"=> "user", "PWD" =>"pass", "Database"=>"sample_db");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn )
{
    $sql = "db_AbbTest";
    $r = sqlsrv_query($conn, $sql, null, array(
            'Scrollable' => SQLSRV_CURSOR_STATIC,
            'SendStreamParamsAtExec'    => true
        ));
    var_dump($r);
        while( $obj = sqlsrv_fetch( $r))
        {
              var_dump($obj);
              var_dump(sqlsrv_fetch_array($r));
        }
     echo "Connection established.\n";
}
else
{
     echo "Connection could not be established.\n";
     die( print_r( sqlsrv_errors(), true));
}

/* Close the connection. */
sqlsrv_close( $conn);

SP 返回三个结果(3 个选择语句),但是我似乎无法从查询中获取所有结果.有任何想法吗?我试过 while(sqlsrv_fetch_object($r){//do something})但没有运气..

The SP returns three results (3x select statements) however i cannot seem to get all of the results back from the query. Any Ideas? I have tried while(sqlsrv_fetch_object($r){//do something}) but no luck..

推荐答案

我设法找到了解决此问题的方法,我不得不使用 while 循环,然后移至下一个结果:

I managed to find a solution to this issue, I had to use a while loop and then move to the next result:

$sql = "{call db_AbbTest}";
$r = sqlsrv_query($conn, $sql, null);
$i =0;
    while( $obj = sqlsrv_fetch_object($r))
    {
            echo $i;
         print_r($obj);
         sqlsrv_next_result($r);
         $i++;
    }

这篇关于如何从PHP中的存储过程循环多个结果集?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆