1

我有一个 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。如果我这样做了同样适用一个劣等的。

有没有办法选择 4 而不是 2 并对劣质 id 做同样的事情?

提前致谢。

4

2 回答 2

1

尝试使用大于>或小于<

$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_*函数已弃用且不再维护,所以我认为是时候切换到PDOmysqli使用准备好的语句来避免任何风险mysql injections,请在此处了解更多信息如何防止 PHP 中的 SQL 注入?

于 2013-06-19T23:56:24.770 回答
0
$limit_id=$cap['id_cap']+2

使用 bellow Query,您可以获得 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 
于 2013-09-05T07:23:06.007 回答