【问题标题】:Executing a stored procedure that returns a result set using sqlsvr_query使用 sqlsvr_query 执行返回结果集的存储过程
【发布时间】:2014-07-07 13:17:06
【问题描述】:

我正在尝试编写一个函数来从 SQL Server 2008 数据库中获取数据,目前的函数是:

function searchMovements($cd,$nm) {

    $usr = $_SESSION['username']."A";
    $hashedpass = $_SESSION['hashedpass'];
    $svr = $GLOBALS["svrName"];
    $db = $GLOBALS["dbName"];

    $retarray = NULL;



    $qry = "EXEC dbo.UDEF_DCAPP_GET_BOOKINGS @STKCODE = ?, @STKNAME = ?";

    // echo("set query to ".$qry."<br>");

    $connectionInfo = array( "Database"=>$db, "UID"=>$usr, "PWD"=>$hashedpass);
    $conn = sqlsrv_connect( $svr, $connectionInfo);

    if ($conn == false) {

        sqlsrv_close($conn);
        // echo("Failed to connect");
        die( print_r( sqlsrv_errors(), true));


    } else {

        $params = array($cd,$nm);

        $result = sqlsrv_query($conn, $qry,$params);

        var_dump($result);

        if($result == false) {
            sqlsrv_close($conn);
            echo("result empty");
            die( print_r( sqlsrv_errors(), true) );
        }

        while( $row = sqlsrv_fetch_array( $result, SQLSRV_FETCH_ASSOC) ) {

            $retarray[] = $row;

        }

        sqlsrv_close($conn);
        return $retarray;

    }



}

我真正遇到问题的部分是:

$params = array($cd,$nm);

$result = sqlsrv_query($conn, $qry,$params);

var_dump($result);

if($result == false) {
    sqlsrv_close($conn);
    echo("result empty");
    die( print_r( sqlsrv_errors(), true) );
}

此部分不断返回result empty

当我 var_dump $result 变量时,我得到 bool(false)

我已经尝试使用 select 语句,这似乎工作正常。 我在 SQL 服务器上运行了一个跟踪,它运行以下查询:

exec sp_executesql N'EXEC dbo.UDEF_DCAPP_GET_BOOKINGS @STKCODE = @P1, @STKNAME = @P2',N'@P1 varchar(8),@P2 varchar(max)','TESTCODE',''

从 SSMS 运行这一行会返回我所期望的结果。

文档似乎表明这应该可行,但这是sqlsvr_qry 函数的限制吗?我做错了吗?

【问题讨论】:

    标签: php sql sql-server sql-server-2008 tsql


    【解决方案1】:

    几天后找到答案,是权限问题。

    当我在 SSMS 中运行脚本时,它处于管理员权限下,但 PHP 以用户身份运行。

    【讨论】:

      猜你喜欢
      • 2018-06-21
      • 2023-03-24
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      相关资源
      最近更新 更多