【问题标题】:How do I use sqlsrv_next_result() to retrieve multiple records?如何使用 sqlsrv_next_result() 检索多条记录?
【发布时间】:2021-03-04 16:22:58
【问题描述】:

我有一张名为tblDate 的表,其中包含dateIDdateDaydateMonth 列以及11 月份的30 条记录。使用sqlsrv_fetch_array(),我只能检索第一条记录。我读过here,为了检索多条记录,我需要使用sqlsrv_next_result(),但我究竟该如何使用呢?据我了解,此功能使下一条记录“活动”,然后允许我回显下一条记录,依此类推。但是当我尝试运行这段代码时:

$tsql = " SELECT * FROM tblDate;";
$stmt = sqlsrv_query( $conn, $tsql);

$row = sqlsrv_fetch_array($stmt);
echo "Date: ".$row["dateID"]." - ".$row["dateMonth"]." ".$row["dateDay"]."\n";

$next_row = sqlsrv_next_result($stmt);

$row = sqlsrv_fetch_array($stmt);
echo "Date: ".$row["dateID"]." - ".$row["dateMonth"]." ".$row["dateDay"]."\n";

我得到错误:

试图在 ... 中访问 bool 类型值的数组偏移量

我知道sqlsrv_next_result($stmt) 在没有更多记录但有更多记录时返回布尔值 false。我希望这段代码应该为我获取前两条记录,我是不是误会了什么?另外,我没有得到“消耗第一个结果”;那和插入记录是如何发挥作用的?我已经尝试直接复制粘贴和替换变量,但我似乎无法让它工作。老实说,这是我使用 php 的第一周,所以我不知道自己在做什么。最终,我只想显示查询的所有记录[SELECT * FROM tblDate 等],我该怎么做?

【问题讨论】:

    标签: php sql sql-server


    【解决方案1】:

    尝试使用这个(未经测试!):

    while (($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_BOTH, SQLSRV_SCROLL_NEXT)) !== NULL)
    {
        // Your business logic using $row.
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-31
      • 2018-05-27
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多