У меня проблема, когда использование sqlsrv_fetch_array возвращает NULL. Я пытаюсь выполнить простой запрос к представлению в MS SQL, которое я проверил в SQL Server Management Studio предоставляет результаты.
Я запускаю PHP 7.4.4 на Windows сервере 2016 x64, с версией 5.8 драйверов PHP SQL и 17.5.2.1 драйвера ODB C.
Подобные запросы выполняются в 4 других представлениях в этой базе данных, и все они работают нормально. Ниже приведен код, который я тестирую:
<?php
include("../mscon.php");
$msConnInfo = array( "Database"=>"XYZ", "UID"=>"username", "PWD"=>"password");
$msConn = sqlsrv_connect( $msServerName, $msConnInfo);
if($msConn)
{
//echo "Connection established.\n";
}
else
{
//echo "Connection could not be established.\n";
die( print_r( sqlsrv_errors(), true));
}
$query = "SELECT * FROM Public_Web";
$result = sqlsrv_query($msConn, $query, array(), array( "Scrollable" => 'static' )) or die( print_r( sqlsrv_errors(), true));
if ($result === false) {
die(print_r(sqlsrv_errors(), true));
}
else
echo "We good fam, no errors<br/>\n";
var_dump($result);
if(sqlsrv_has_rows($result))
{
echo "<br/>Rows exist<br/>\n";
$numRows = sqlsrv_num_rows($result);
echo "There are $numRows rows<br/>\n";
while ($row = sqlsrv_fetch_array($result));
{
var_dump($row);
}
}
else
{
echo "no results were found<br/>\n";
}
sqlsrv_free_stmt( $result);
sqlsrv_close($msConn);
?>
Приведенные выше выходные данные кода позволяют мне узнать, что ошибок нет и что в представлении существует 1493 строки. Но когда я делаю var_dump для $ row, он выводит NULL. Все поля в представлении, к которому я пытаюсь получить доступ, являются varchar, а всего их всего 7.
Я попытался просто захватить одно поле в моем запросе вместо всех полей, никаких изменений в результатах. Похоже, я перепробовал все возможные методы устранения неполадок.
Все, о чем вы можете подумать, было бы очень признательно. Спасибо.