sqlsrv\u fetch\u数组返回null

bis0qfac  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(371)

我有一个问题,使用sqlsrv\u fetch\u数组返回null。我正在尝试对mssql中的一个视图执行一个简单的查询,我在sqlservermanagementstudio中验证了该视图提供的结果。
我在WindowsServer2016x64上运行PHP7.4.4,PHPSQL驱动程序版本为5.8,odbc驱动程序版本为17.5.2.1。
类似的查询正在这个数据库中的其他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行。但是当我在$row上执行var\u转储时,它会输出null。我试图访问的视图中的所有字段都是varchar,总共只有7个字段。
我试着在我的查询中只获取一个字段而不是所有字段,结果没有变化。好像我已经尝试了所有可能的故障排除方法。
任何你能想到的都将不胜感激。谢谢。

k3bvogb1

k3bvogb11#

问题解决了。我们最终删除了sql中的视图并重新创建了它。不知道为什么它不能正常工作。

相关问题