使用SQL和PHP获取下一篇文章

时间:2014-04-15 10:38:57

标签: php sql

我做了一个非常粗略和基本的CMS作为学习练习。我的下一个挑战是创建一个分页(下一篇文章,上一篇文章)。

理想情况下,如果post_status设置为published,我需要收到下一篇文章。

此刻我收到了这样的帖子:

SELECT post_title, post_content, post_id, post_status FROM posts WHERE post_id='$id' AND post_status='published'

在我看来,我会在PHP端增加$id,例如$id++。因此,如果我在post_id=19,我会尝试post_id=20。但是,如果该帖子设置为已发布,会发生什么?如何获取下一个条目WHERE post_status='published'?这可以是2123等。

2 个答案:

答案 0 :(得分:1)

你可以这样做,比如你有

$id = 19;


SELECT post_title,
post_content, 
post_id, 
post_status 
FROM posts 
WHERE post_status='published'
AND post_id > '$id' 
order by post_id
LIMIT 1

这将检查id > 19post_status='published'的帖子,然后通过排序和limit 1

获得下一个

<强>更新 正如danielsmile在$ id = 19之前评论获得前一个获得最后一个;将与上面相同

SELECT post_title,
    post_content, 
    post_id, 
    post_status 
    FROM posts 
    WHERE post_status='published'
    AND post_id < '$id' 
    order by post_id DESC
    LIMIT 1

答案 1 :(得分:0)

如果帖子是按id订购的(可能按日期排序会更好),您可以使用以下内容获取下一篇文章:

SELECT post_title, post_content, post_id, post_status
FROM posts 
WHERE port_status = 'published' 
AND id > $id 
ORDER BY id ASC 
LIMIT 1

这意味着 - 获取比当前帖子更高id的所有帖子。按id升序排序,得到第一个。因此,它会为您提供最接近较高id的帖子。