【发布时间】:2019-04-04 17:42:44
【问题描述】:
我们最近将 PHP 版本从 5 升级到了 7,因此我不得不更改用于访问我们的 MS SQL 数据库的类。
我开始使用 sqlsrv,并且我在一个类中有一个方法来执行存储过程,它几乎可以做到这一点
<?php
$stmt = sqlsrv_prepare($db, $sql, $procedure_params);
if (!sqlsrv_execute($stmt)) {
if( ($errors = sqlsrv_errors() ) != null)
{
foreach( $errors as $error)
{
echo "SQLSTATE: ".$error[ 'SQLSTATE']."\n";
echo "code: ".$error[ 'code']."\n";
echo "message: ".$error[ 'message']."\n";
die();
}
}
}
// (1) This works, I get all the rows with data, etc...
while($row = sqlsrv_fetch_array($stmt)){
print_r($row);
}
// (2) Returning the cursos won't work, I cannot fetch it when I return it as a result
return $stmt;
?>
一旦我执行了存储过程,我就会得到结果并且可以毫无问题地获取它 (1)。但是,如果我作为我的方法/函数的结果返回光标,当我因为调用该方法而得到光标时,我无法获取它,就像它是空的一样。 (2)
有什么想法吗?如果这是一个愚蠢的问题,我很抱歉,但我一直在谷歌上搜索这个问题,我看不到任何谈论类似问题的帖子。
谢谢!
【问题讨论】:
标签: sql-server stored-procedures php-7 sqlsrv