我有一个包含许多条目的数据库,其中也包含日期时间字段。 现在索引是一个 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/