PHP 每页显示 x 个结果的最佳方法

标签 php mysql

我有一个包含许多条目的数据库,其中也包含日期时间字段。 现在索引是一个 md5 哈希值,它是根据其他字段(包括日期)计算得出的,从而使每个条目都是唯一的。

假设该数据库每页显示 50 个结果,最好的方式是什么?您能提供一个 php 示例吗?

我可能没有看到这一点,但如果我使用整数 ID 字段作为唯一键(它会自动递增),这会容易得多,因为这样我可以查询最后一个 ID,如 9412 并执行 -50 来当用户单击箭头时,获取第一页的最后 50 个结果,然后执行 -50 以获取第二页上的前 50 个结果。

唯一的问题是我确实 REPLACE INTO 这个数据库以避免哈希重复条目。如果 ID 是自动递增整数,则这可能不起作用。

谢谢。

最佳答案

正如其他人提到的,我还建议使用LIMIT, OFFSET

我在很多网站上都看到过这种方法:

用户点击例如第 5 页并被重定向到

-> view.php?p=5

在 PHP 文件中有这样的内容:

$page = $_GET['p'];
$limit = 50;

$page = ($page - 1) * $limit;

$sql = "SELECT * FROM Posts LIMIT ".$limit." OFFSET ".$page." ORDER BY ID";
. . . 

2020 年编辑: 我只是不小心重新发现了我的答案,如果你想走这条路,请使用 prepared statements保护自己免受SQL Injection attacks的侵害

关于PHP 每页显示 x 个结果的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25718856/

相关文章:

php和mysql网站设计问题

php - Innodb 全文搜索中的转义 @ 符号

php - UTF-8贯穿始终

mysql - 重命名 InnoDB 表而不更新对其的外键引用?

java - 将数据从小程序文本字段插入 mysql 数据库 - 错误

Java/Spring Boot Web 应用程序。插入带有自动递增 id 列的新行

php - 组合多个 MySQL JOIN 查询

php - laravel undefined variable : user

PHP 函数 is_executable 返回 false,即使该文件肯定是可执行的

java - 如何通过浏览器在本地下发Java程序