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


Selecting the previous or next row based on ID

我有一个 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 执行相同的操作?

提前谢谢。

尝试使用大于 > 或小于 <

$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 注入?

$limit_id=$cap['id_cap']+2

使用下面的查询,您可以获得上一页和下一页。此查询的结果将返回两行。第一个是上一个,另一个是下一个。

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