如何使用Advantage PHP Extension获取行数?

时间:2011-10-20 03:19:57

标签: php advantage-database-server

如何使用Advantage Database PHP Extension从SELECT语句结果集中获取行数?

3 个答案:

答案 0 :(得分:1)

我最终编写了自己的函数,类似于mysql_num_rows:

function my_num_rows($result) {
    ob_start(); // begin disable output from ads_result_all
    (int)$number = ads_result_all($result);
    ob_end_clean(); //close and clean the output buffer
    ads_fetch_row($r1, 0); // reset the result set pointer to the beginning
    if ($number >= 0){
         return $number;
    } else {
         return FALSE;
    }
}

也可以使用ads_fetch_row对行进行重写,但这对于我需要的内容来说更容易。使用大型结果集时,使用ads_result_all可能会降低性能。

答案 1 :(得分:0)

您必须在获取行时计算行数。 (您可以看到此KB项070618-1888)或者您可以使用COUNT()标量执行第二个查询(如果可能,建议排除排序)

这是一个计算的例子:

$rStmt = ads_do ($rConn, "select id, name from table1");
$RowCount = 0;
while (ads_fetch_row($rStmt))
{
   $id = ads_result ($rStmt, "id");
   $name = ads_result($rStmt, "name");
   echo $id . "\t" . $name . "\n";
   $RowCount++;
}
echo "RowCount:" . $RowCount . "\n";

答案 2 :(得分:0)

据我所知,在版本12中,您具有函数ads_num_rows()。请参阅官方文档中的更多用法。