sqlsrv_fetch_array возвращает NULL - PullRequest
       101

sqlsrv_fetch_array возвращает NULL

0 голосов
/ 05 августа 2020

У меня проблема, когда использование 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.

Я попытался просто захватить одно поле в моем запросе вместо всех полей, никаких изменений в результатах. Похоже, я перепробовал все возможные методы устранения неполадок.

Все, о чем вы можете подумать, было бы очень признательно. Спасибо.

1 Ответ

0 голосов
/ 20 августа 2020

Проблема решена. Мы закончили тем, что удалили представление в SQL и воссоздали его. Понятия не имею, почему он не работал должным образом.

...