大型PHP阵列分页

时间:2011-02-09 08:33:59

标签: php mysql pagination

我有一个超过10k结果的数组(由MySQL查询生成),我想知道什么是分页的最佳实践呢?首先提取所有数据然后将其拆分为页面还是有另一种更快/更好的方式?

4 个答案:

答案 0 :(得分:5)

使用MySQL的LIMIT语法仅在数据库到达PHP代码之前从数据库中检索所需的结果。

这样的事情:

$offset = 0;
$per_page = 25;

$query = "SELECT * FROM `blah` LIMIT $offset, $per_page";

...

答案 1 :(得分:3)

根据建议,您可以使用LIMIT。要查找结果总数,您可以选择执行以下操作:

SELECT SQL_CALC_FOUND_ROWS * FROM `table` ... LIMIT 0, 20

然后:

SELECT FOUND_ROWS() AS `total_results`

检索您的分页器的最大页码。

答案 2 :(得分:1)

显示这些记录的分页导航链接,请考虑使用“对数”页面导航。见这里:

How to do page navigation for many, many pages? Logarithmic page navigation

答案 3 :(得分:0)

您可能希望在提取内容之前执行COUNT()查询,以确定总共有多少行。然后找出你需要多少页面的一般算法

  

ceil(totalRows / rowsPerPage)