从PHP函数返回MSSQL查询结果时出现问题


Trouble returning MSSQL query results from PHP function

当我试图返回正在工作的sqlsrv_query函数调用的结果时,遇到了一个奇怪的错误。

我已经设置:

function test($someinput, &$someoutput)
{
  //set up $dbc and $dbcOptions
  //generate tsql
  $params = array();
  $stmt = sqlsrv_query($dbc, $tsql, $params, $dbcOptions);
  $someoutput = $stmt;
  return $stmt;
}
$outputvar;
$results = test($inputvar, $outputvar);
//---ERROR being thrown here
$rows = sqlsrv_num_rows($results);
//$rows2 = sqlsrv_num_rows($outputvar);
//---ERROR being thrown here

在这两行中(不管我用哪一行),我在php-errors.log文件中都收到一个错误,说

PHP Warning:  sqlsrv_num_rows(): 2 is not a valid ss_sqlsrv_stmt resource in
E:'inetpub'wwwroot'directory'searchtest.php on line 58

CCD_ 2是我正在处理的文件,第58行是我产生错误代码的地方。

为什么我不能传递这样一个函数的查询结果?

根据OP希望标记为已回答,注释(略有修改)以回答:

这听起来是一个范围问题。

尝试将$dbc传递给函数(最佳),或(not recommended(不推荐))使其成为函数中的global $dbc;

在我看来,您的SQL语句中有一个错误。您可以在之后拨打sqlsrv_errors

$stmt = sqlsrv_query($dbc, $tsql, $params, $dbcOptions);

if( $stmt === false ) {
    if( ($errors = sqlsrv_errors() ) != null) {
        foreach( $errors as $error ) {
            echo "SQLSTATE: ".$error[ 'SQLSTATE']."<br />";
            echo "code: ".$error[ 'code']."<br />";
            echo "message: ".$error[ 'message']."<br />";
        }
    }
}

然后你应该找到错误。