繁体   English   中英

在 php 中对结果进行分页的最佳方法是什么

[英]What is the best way to paginate results in php

我需要在一个站点中显示多页新闻。 在获得所有结果后,我应该使用LIMIT还是使用 PHP 脚本在数据库查询中进行分页?

使用限制 - 如果可以避免,您不希望将大量数据从数据库传输到脚本引擎。

在 SQL 中使用限制! 每次!

否则,您会抛出比您需要的多得多的数据,这会使您的脚本不必要地变慢,并且随着表中数据量的增加会导致可伸缩性问题。

极限是你的朋友!

如果您只想使用支持此功能的 DBMS,而不是在 DBMS 上进行。 如果你想在未来支持其他 DBMS,那么在它之间添加一个层,可以根据当前的 DBMS 进行处理。

您可以使用一些现有的库来帮助您:

Pear:: Pager可以帮助输出,并将数据库流量限制在您需要的范围内,您可以使用随附的示例中提供的包装器。

这是我刚刚用谷歌搜索的教程,其中包含所有内容......

除了使用LIMIT ,我还建议使用显式WHERE子句来设置偏移量,并对该列的结果进行排序。 例如:

--- First page (showing first 50 records)
SELECT * FROM people ORDER BY id LIMIT 50
--- Second page
SELECT * FROM people WHERE id > 50 ORDER BY id LIMIT 50

这进一步将返回的行数限制在所需范围内。 使用WHERE方法(与具有单独偏移量的LIMIT子句相反,例如LIMIT 50,50 )允许您有效地处理具有其他自然键的记录的分页,例如按名称的字母顺序或按日期顺序。

就个人而言,我会使用查询来做到这一点。 显然,如果您处理 AJAX 等,情况可能会发生变化,但仅在查询中进行基本限制并输出结果是简单而有效的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM