Недавно мы обновили нашу версию 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)
Есть идеи? Извините, если это глупый вопрос, но я гуглюл по этой проблеме, и я не вижу сообщений о подобной проблеме.
Спасибо!