我有一个问题,使用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个字段。
我试着在我的查询中只获取一个字段而不是所有字段,结果没有变化。好像我已经尝试了所有可能的故障排除方法。
任何你能想到的都将不胜感激。谢谢。
1条答案
按热度按时间k3bvogb11#
问题解决了。我们最终删除了sql中的视图并重新创建了它。不知道为什么它不能正常工作。