【问题标题】:What is the tried and true way of counting the number of rows returned from PHP `mysql_query` function?计算从 PHP `mysql_query` 函数返回的行数的可靠方法是什么?
【发布时间】:2010-11-14 13:18:51
【问题描述】:

我知道mysql_num_rows ( resource $result ),但我在某处读到它不是 100% 准确的。我已经看到其他替代方案实际上得到每一行并运行一个计数器,但这听起来效率很低。我有兴趣了解其他人如何获得准确有效的计数。

【问题讨论】:

    标签: php mysql count rows


    【解决方案1】:

    mysql_num_rows() 是准确的,只要您不使用mysql_unbuffered_query()

    如果您使用的是mysql_query()mysql_num_rows() 是准确的。

    如果您使用mysql_unbuffered_query()mysql_num_rows() 将返回错误结果,直到检索到所有行。

    【讨论】:

      【解决方案2】:

      当您完成 SELECTSHOW 查询时使用 mysql_num_rows() 并在 INSERT, UPDATE, REPLACE or DELETE 查询时使用 mysql_affected_rows()
      两者都足够准确!

      【讨论】:

        【解决方案3】:

        这将有助于准确了解您对行数所做的工作,但我假设它适用于非常标准的分页结果集应用程序。

        发出两个查询。第一个是具有第二个的所有 WHERE 条件的 COUNT 查询。第二个用于获取行。当你只打算显示其中的 10 行时,要么是这个,要么将 1000 行加载到内存中。

        但是,如果您需要保证准确性,则必须将这两个查询包装在一个读取一致性事务中。否则,恰好在计数和数据查询之间运行的查询可能会使分页信息无效。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-10-16
          • 2011-01-29
          • 1970-01-01
          • 2011-01-14
          • 2016-11-08
          • 1970-01-01
          • 2021-06-09
          • 1970-01-01
          相关资源
          最近更新 更多