我做了一个非常粗略和基本的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'
?这可以是21
,23
等。
答案 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 > 19
与post_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
的帖子。