【问题标题】:How to loop through multiple result sets from stored procedure in PHP?如何从 PHP 中的存储过程中循环多个结果集?
【发布时间】:2012-05-02 18:33:35
【问题描述】:

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

Stored procedure

CREATE PROCEDURE db_abbTest
AS
BEGIN
        SET NOCOUNT ON;

        SELECT 1
        SELECT 2
        SELECT 3
        RETURN 0
END
GO

PHP code

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

【问题讨论】:

  • 你得到什么结果?也就是var_dump的结果是什么?
  • @Siva,认为 pastebin 是相当大的代码段的公认解决方案? Wallyk 我得到了var_dump($obj) 和第二个空白..

标签: php sql-server stored-procedures


【解决方案1】:

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

$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++;
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-08
    • 2011-07-15
    • 2013-08-05
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多