如何获得MySql无限制返回的结果数量?

时间:2012-10-09 14:44:05

标签: php mysql limit

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

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

如果我在同一个请求中执行COUNT(*),我会得到所选元素的数量(在我的情况下为10)。

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

最简洁的方法是什么:

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

一个解决方案似乎是使用Mysql function 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 )

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

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

2 个答案:

答案 0 :(得分:0)

如果mysql.trace_modeOff,请将On设置为ini_set('mysql.trace_mode','Off');

如果您无法编辑my.cnf

{{1}}也可能会有效,具体取决于您的主机配置

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

答案 1 :(得分:0)

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

输出是:

Array ( [0] => 10976 )

我仍然对另一种方法感兴趣,特别是那些不依赖于mysql的东西。