我有一个mysql表,其中我想要根据当前所选值的ID获取下级(即上一个)或上级(即下一个)项。
如下所示:
$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执行相同的操作?
提前谢谢。
发布于 2013-06-20 07:56:25
尝试使用大于>或小于<
$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?了解更多信息
发布于 2013-09-05 15:23:06
$limit_id=$cap['id_cap']+2使用下面的查询,你可以得到prev和next。此查询的结果将返回两行。第一个是前一个,另一个是下一个。
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 https://stackoverflow.com/questions/17203232
复制相似问题