无法从PHP函数返回SQL查询结果

时间:2014-11-12 22:12:09

标签: php sql-server

尝试返回正在运行的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

searchtest.php是我正在处理的文件,第58行是我有错误产生代码的地方。

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

2 个答案:

答案 0 :(得分:1)

根据OP希望标记为已回答,请评论(略微修改)以回答:

这听起来像scope个问题。

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

答案 1 :(得分:0)

在我看来,您的SQL语句中有错误。 您可以在:{/ p>之后致电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 />";
        }
    }
}

然后你应该找到错误。