首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据ID选择上一行或下一行

问根据ID选择上一行或下一行
EN

Stack Overflow用户
提问于 2013-06-20 07:54:10
回答 2查看 112关注 0票数 1

我有一个mysql表,其中我想要根据当前所选值的ID获取下级(即上一个)或上级(即下一个)项。

如下所示:

代码语言:javascript
复制
$id_ani = $cap['id_ani']; //Current id
$id_capnex = $cap['id_cap']+1; //Superior id
$nexcap = mysql_query("SELECT * FROM m_table WHERE id_cap=$id_capnex");
$id_caprev =  $cap['id_cap']-1; //Inferior id
$prevcap = mysql_query("SELECT * FROM m_table WHERE id_cap=$id_caprev");

所以在代码中,我有当前id、上级id和下级id。

这里的问题是,如果当前id = 1,并且1之后唯一存在的id是4,那么上级id将是'1'+1,而不是4,这是1之后唯一存在的id。如果我使用下级id也是如此。

有没有一种方法可以选择4而不是2,并对下级id执行相同的操作?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-20 07:56:25

尝试使用大于>或小于<

代码语言:javascript
复制
$id_capnex = $cap['id_cap']+1; //Superior id
$nexcap = mysql_query("SELECT * FROM m_table WHERE id_cap=$id_capnex");
$id_caprev =  $cap['id_cap'];
$prevcap = mysql_query("SELECT * FROM m_table WHERE id_cap<$id_caprev orber by id_cap ASC");
//inferior
$prevcap = mysql_query("SELECT * FROM m_table WHERE id_cap>$id_caprev orber by id_cap ASC");
//superior

作为附注,我要补充说,mysql_*函数已被弃用且不再维护,因此我认为是时候切换到PDO或mysqli,并使用预准备语句来避免任何mysql injections风险,请在How can I prevent SQL injection in PHP?了解更多信息

票数 1
EN

Stack Overflow用户

发布于 2013-09-05 15:23:06

代码语言:javascript
复制
$limit_id=$cap['id_cap']+2

使用下面的查询,你可以得到prev和next。此查询的结果将返回两行。第一个是前一个,另一个是下一个。

代码语言:javascript
复制
SELECT * , IF( id >$cap['id_cap'], 1, 0 ) AS NextFlag, IF( id <$cap['id_cap'], 1, 0 ) AS PrevFlag FROM m_table 
WHERE id_cap <$limit_id
HAVING NextFlag =1
OR PrevFlag =1
ORDER BY id_cap DESC
LIMIT 2 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17203232

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档