我有一个包含大量数据的表,所以我检索它并一次显示一页(我的请求很长,所以我无法在整个表上运行它。)
但是我想对结果进行分页,所以我需要知道表格中元素的总数是多少。
如果我在同一个请求中执行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 )
而我的查询确实会返回结果。
我的做法有什么问题?你有更好的解决方案吗?
答案 0 :(得分:0)
如果mysql.trace_mode
为Off
,请将On
设置为ini_set('mysql.trace_mode','Off');
。
{{1}}也可能会有效,具体取决于您的主机配置
如果这不能使您上面发布的代码生效,那么您将需要在没有LIMIT的情况下再次运行查询并以此方式计算。
答案 1 :(得分:0)
上面的代码运行正常。我没有正确打开连接。
输出是:
Array ( [0] => 10976 )
我仍然对另一种方法感兴趣,特别是那些不依赖于mysql的东西。