gpt4 book ai didi

php - 循环遍历 MySQL 结果

转载 作者:行者123 更新时间:2023-11-29 04:55:37 24 4
gpt4 key购买 nike

我不确定这到底是怎么称呼的,但我会尽力描述我想要实现的目标。

所以,首先,有一个变量,叫做$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}) 时,当 $id9 时,输出不再显示 3 页,而是 2 页、1 页和分别没有输出。

所以我的问题是:当没有足够的结果(少于 3 个)可供显示时,有没有办法返回并从头开始?

  • 访问 /page.php?id=8 时,输出应包含 ID 为 912 的页面
  • 访问/page.php?id=9时,输出应该包含id为123的页面
  • 访问/page.php?id=3时,输出应该包含id为456的页面 等等。

最佳答案

(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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com