0

我有一个包含大量数据的表,所以我检索它并一次显示一页(我的请求很长,所以我无法在整个表上运行它)。

但我想对结果进行分页,所以我需要知道我的表格中的元素总数是多少。

如果我COUNT(*)在同一个请求中执行 a ,我会得到所选元素的数量(在我的例子中是 10)。

如果我COUNT(*)在第二个请求中对我的表执行 a,则结果可能是错误的,因为我的主查询中的 where、join 和 having 子句。

什么是最干净的方法:

  • 检索数据
  • 了解我的表中针对此特定请求的最大元素数

一种解决方案似乎是使用Mysql 函数 FOUND_ROWS

我试过这个,因为 mysql_query 一次执行一个查询:(采取here

$query = 'SELECT SQL_CALC_FOUND_ROWS * FROM Users';
$result = mysql_query($query);
// fetching the results ...

$query = 'SELECT FOUND_ROWS()';
$ result = mysql_query($query);

// debug
while ($row = mysql_fetch_row($result)) {
    print_r($row);
}

我得到了一个结果为 0 的数组:

Array ( [0] => 0 )

而我的查询确实返回结果。

我的方法有什么问题?你有更好的解决方案吗?

4

2 回答 2

0

如果是 则设置mysql.trace_mode为。OffOn

ini_set('mysql.trace_mode','Off');如果您无法编辑 my.cnf,也可能会根据您的主机配置工作

如果这不能使您在上面发布的代码起作用,那么您将需要在没有 LIMIT 的情况下再次运行查询并以这种方式计算。

于 2012-10-09T14:49:53.040 回答
0

上面的代码工作正常。我没有正确打开连接。

输出是:

Array ( [0] => 10976 )

我仍然对另一种方法感兴趣,尤其是不依赖于 mysql 的方法。

于 2012-10-09T14:57:31.543 回答