sqlsrv_num_rows不返回任何值

use*_*577 11 php sqlsrv

我试图获取查询中返回的行数.循环遍历结果的while循环有效,但由于某种原因,sqlsrv_num_rows不返回任何值:

$result = "SELECT * from dtable WHERE id2 = 'apple'";
$query = sqlsrv_query($conn, $result);

$row_count = sqlsrv_num_rows($query);
echo $row_count;

while($row = sqlsrv_fetch_array($query))
{
      echo 'yes';
}
Run Code Online (Sandbox Code Playgroud)

谢谢.

alp*_*yol 22

这是因为默认sqlsrv_query()使用SQLSRV_CURSOR_FORWARD游标类型.但是,为了获得结果sqlsrv_num_rows(),您应该选择以下这些游标类型之一:

  • SQLSRV_CURSOR_STATIC
  • SQLSRV_CURSOR_KEYSET
  • SQLSRV_CURSOR_CLIENT_BUFFERED

有关更多信息,请检查:游标类型(SQLSRV驱动程序)

总之,如果您使用以下查询:

$query = sqlsrv_query($conn, $result, array(), array( "Scrollable" => 'static' ));
Run Code Online (Sandbox Code Playgroud)

你会得到结果:

$row_count = sqlsrv_num_rows($query);
Run Code Online (Sandbox Code Playgroud)