从PHP函数返回MSSQL查询结果时出现问题
在尝试返回正在工作的sqlsrv_查询函数调用的结果时,我遇到了一个奇怪的错误 我已设立:从PHP函数返回MSSQL查询结果时出现问题,php,sql-server,Php,Sql Server,在尝试返回正在工作的sqlsrv_查询函数调用的结果时,我遇到了一个奇怪的错误 我已设立: function test($someinput, &$someoutput) { //set up $dbc and $dbcOptions //generate tsql $params = array(); $stmt = sqlsrv_query($dbc, $tsql, $params, $dbcOptions); $someoutput = $stmt; ret
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行是生成代码时出错的地方
为什么我不能从这样的函数中传递查询结果?在我看来,您的SQL语句中有一个错误。 您可以在以下操作之后调用
sqlsrv\u errors
:
$stmt=sqlsrv_查询($dbc、$tsql、$params、$dbcopions)代码>
if($stmt==false){
如果($errors=sqlsrv_errors())!=null){
foreach($errors作为$error){
回显“SQLSTATE:”.$error['SQLSTATE'].“
”;
回显“代码:.”错误['code']。“
”;
回显“消息:.”错误['message']。“
”;
}
}
}
然后,您应该找到错误。根据OP希望标记为已回答,请对回答进行注释(稍加修改):
这听起来是个问题
尝试将$dbc
传递给您的函数(最佳),或(不推荐)使其成为全局$dbc代码>在您的函数中 返回$stmt代码>缺少变量symbol@Mihai谢谢,我已经更正了,但是代码的行为还是一样的。可能是范围问题。尝试将$dbc
传递给您的函数,或者(不推荐)使其成为全局$dbc代码>在你的函数中。@Fred ii-这似乎已经修复了它。把这个写下来作为答案,我会投赞成票,并把它标为正确。谢谢你的帮助!好的,不用谢Joel。我可以用你认为最好的方法传递$dbc
@JoelTrauger,太好了Joel,更好了<代码>全球
被认为是“邪恶的”,他们这么说。它有它的优点和缺点。
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 />";
}
}
}