作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不确定这到底是怎么称呼的,但我会尽力描述我想要实现的目标。
所以,首先,有一个变量,叫做$id
,它实际上是$_GET['id']
。假设用户通过请求进入以下页面:/page.php?id=6
。现在我需要做的是提供有关数据库中接下来 3 页的信息。这是数据库:
TABLE `pages`
id | page_name
______________________
1 | AAAAA
2 | BBBBB
3 | CCCCC
4 | DDDDD
5 | EEEEE
6 | FFFFF
7 | GGGGG
8 | HHHHH
9 | IIIII
因此,在请求 ID 为 6
的页面时,以下脚本返回接下来的 3 个页面 (7,8,9):
$res = mysql_query("SELECT * FROM `pages` WHERE `id`>'".intval($id)."' ORDER BY `id` DESC LIMIT 3");
while($arr = mysql_fetch_assoc($res))
{
print("Page ID: ".$arr['id']."; Page Name: ".$arr['page_name']."\n");
}
这是输出:
Page ID: 7; Page Name: GGGGG
Page ID: 8; Page Name: HHHHH
Page ID: 9; Page Name: IIIII
在 $id
大于 6 之前它工作正常。当它是 (/page.php?id={7/8/9}
) 时,当 $id
为 9
时,输出不再显示 3 页,而是 2 页、1 页和分别没有输出。
所以我的问题是:当没有足够的结果(少于 3 个)可供显示时,有没有办法返回并从头开始?
/page.php?id=8
时,输出应包含 ID 为 9
、1
和 2 的页面
。 /page.php?id=9
时,输出应该包含id为1
、2
、3的页面
。 /page.php?id=3
时,输出应该包含id为4
、5
、6的页面
等等。最佳答案
(SELECT *, 0 AS custom_order FROM `pages` WHERE `id`>'".intval($id)."' ORDER BY `id` ASC LIMIT 3)
UNION ALL
(SELECT *, 1 AS custom_order FROM `pages` ORDER BY `id` ASC LIMIT 3)
ORDER BY custom_order, id ASC
LIMIT 3
这样你总能得到 3 页。如果下一页不够,您将从头开始最多 3 页。
关于php - 循环遍历 MySQL 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6763519/
我是一名优秀的程序员,十分优秀!