当我试图返回正在工作的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 />";
}
}
}
然后你应该找到错误。