当结果集只有一行时,SQL Server 和 PHP sqlsrv_fetch_array 返回 null
Posted
技术标签:
【中文标题】当结果集只有一行时,SQL Server 和 PHP sqlsrv_fetch_array 返回 null【英文标题】:SQL Server & PHP sqlsrv_fetch_array returns null when result set has only one row 【发布时间】:2018-03-16 20:23:54 【问题描述】:我正在尝试从 php 中的 sql server 获取数据。 我的代码是这样的:
$conn = "...";
$sql = "SELECT A.* FROM A
LEFT JOIN B ON A.id = B.id
WHERE A.First_Name = 'Mary'";
$stmt = sqlsrv_query($conn, $sql);
if( sqlsrv_fetch($stmt) === false)
die( print_r( sqlsrv_errors(), true));
while($row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC))
echo $row['Last_Name'];
当结果集中只有一行时,返回null。但我可以使用 sqlsrv_get_field 得到结果。是什么原因?
【问题讨论】:
【参考方案1】:这个:
if( sqlsrv_fetch($stmt) === false)
die( print_r( sqlsrv_errors(), true));
获取一行。之后,在 while 循环中没有更多行可以获取。
相反,删除 fetch 调用并仅评估 $stmt
。如果查询失败则为假。
if($stmt === false)
die( print_r( sqlsrv_errors(), true));
【讨论】:
以上是关于当结果集只有一行时,SQL Server 和 PHP sqlsrv_fetch_array 返回 null的主要内容,如果未能解决你的问题,请参考以下文章