【问题标题】:How to get number of rows with Advantage PHP Extension?如何使用 Advantage PHP Extension 获取行数?
【发布时间】:2023-03-29 02:30:02
【问题描述】:

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

【问题讨论】:

    标签: php advantage-database-server


    【解决方案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 可能会降低性能。

    【讨论】:

      【解决方案2】:

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

      这是一个边走边算的例子:

      $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";
      

      【讨论】:

      • 感谢您的回复。我尝试这样做,但我遇到的问题是,在计算行数后,结果指针最终位于结果集的末尾,需要重置。我最终使用了我在答案中发布的方法。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-23
        • 2016-02-25
        • 2020-02-02
        • 1970-01-01
        • 2021-01-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多