Php 使用sqlsvr\u查询执行返回结果集的存储过程

Php 使用sqlsvr\u查询执行返回结果集的存储过程,php,sql,sql-server,sql-server-2008,tsql,Php,Sql,Sql Server,Sql Server 2008,Tsql,我正在尝试编写一个从SQL Server 2008数据库中获取数据的函数,目前的函数是: function searchMovements($cd,$nm) { $usr = $_SESSION['username']."A"; $hashedpass = $_SESSION['hashedpass']; $svr = $GLOBALS["svrName"]; $db = $GLOBALS["dbName"]; $retarray = NULL;

我正在尝试编写一个从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;

    }



}
此部分不断返回
结果为空

当我
var\u dump
变量
$result
时,我得到
bool(false)

我尝试过使用select语句,但似乎效果不错。 我在SQL server上运行了跟踪,它运行以下查询:

exec sp_executesql N'EXEC dbo.UDEF_DCAPP_GET_BOOKINGS @STKCODE = @P1, @STKNAME = @P2',N'@P1 varchar(8),@P2 varchar(max)','TESTCODE',''
从SSMS运行这一行将返回我所期望的结果


文档似乎建议这应该有效,但这是
sqlsvr\u qry
函数的限制吗?我做错什么了吗?

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

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

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