需要方法来查找下一个/上一个记录ID而不循环遍历所有记录

时间:2010-12-31 20:44:01

标签: php mysql

我正在使用MySQL和PHP。

我有一个MySQL博客文章结果集,其中包含id字段和publish_date字段。我每页显示一篇博文,并且脚本知道基于$ _GET ['id']显示哪个博客帖子,这与每个博客条目的id字段相关。我想在网址中通过id引用它们,因为我希望每篇博文都有一个永久性的网址。我想按发布日期(降序)订购博客文章。

现在,在每个页面上都会有下一个和上一个链接,其中包含下一个和上一个博客帖子的$ _GET ['id']值。如何在不循环访问每个mysql结果行的情况下,如何确定下一个和上一个博客帖子的ID(由它的publish_date命令确定)?我不能mysql_data_seek(),因为我不知道当前博客帖子id的行索引。我不想在GET变量中存储行索引,因为url不再是永久性的。我显然无法将行索引存储在SESSION变量中,因为直接指向特定博客帖子的链接会破坏下一个和上一个链接。

任何建议都将不胜感激。

1 个答案:

答案 0 :(得分:2)

也许像这样的伪SQL:

select id as nextId
from blogPosts
where pubDate > $thisPubDate
order by pubDate
limit 1;

select id as prevId
from blogPosts
where pubDate < $thisPubDate
order by pubDate DESC
limit 1;