我有一个页面显示按日期排序的所有项目。当您点击项目时,您将进入页面project-single.php?id=123
,其中我有一个上一个和下一个按钮。所有项目都有一个id(没有连续顺序,也就是没有auto_incremented),以及projects
表中创建时间戳的日期(2012-07-20 00:36:20的形式)数据库。我试图想一个有效的方法来获得项目的id在id=123
之前和之后的prev下一个按钮的日期。但我想不出比使用id
和date_created
创建数组并比较日期更简单的方法;你可以想象在服务器上会非常沉重,因为这是一个经常访问的页面。有没有人有更清洁的解决方案?
答案 0 :(得分:1)
您可以考虑将时间戳更改为Unix timestamp而不是字符串。 Unix时间戳是简单的整数,对于数据库来说比较简单有效。
使用比较运算符,时间戳的索引和LIMIT 1,您应该有一个非常快的SQL语句。这是一些示例代码:
-- For getting the next project.
SELECT * FROM projects WHERE date_created > :current_project_date ORDER BY date_created ASC LIMIT 1;
-- For getting the previous project.
SELECT * FROM projects WHERE date_created < :current_project_date ORDER BY date_created DESC LIMIT 1;
我不熟悉MySQL,所以这些结果可能需要一些调整,但这就是要点。