我有一个包含大量数据的表,所以我检索它并一次显示一页(我的请求很长,所以我无法在整个表上运行它)。
但我想对结果进行分页,所以我需要知道我的表格中的元素总数是多少。
如果我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 )
而我的查询确实返回结果。
我的方法有什么问题?你有更好的解决方案吗?