|
很久没发帖了,今天正好被人问一个问题,就是关于一条记录的上一条和下一条的数据库操作方式的实现方案。
关于相邻记录的获取,肯定是依据order by 和 desc/asc来获取,这个地球人都知道,但在这个文章里,我想说的是使用 UNION ALL 读一次数据库把相邻数据得出的方式。
例句:
PHP复制代码
$sql = "(SELECT `itemid`,`title` FROM `news` WHERE `itemid` > '".$itemid."' ORDER BY `itemid` LIMIT 1)
UNION ALL
(SELECT `itemid`,`title` FROM `news` WHERE `itemid` < '".$itemid."' ORDER BY `itemid` DESC LIMIT 1 )";
复制代码
以传入的参数 $itemid 为依据,一次就把相邻数据全部获得(避免两次读取)。如果需要多条, 可以控制LIMIT后面的数值.
在前端显示的时候,还需要做一个简单的判断。
例如,上例生成的结果 $result , 在使用前需用count()函数判断一下. 如果count()的结果等于2, 那么相邻的前后两条数据都有, foreach操作就可以.
如果count()的结果等于1, 需要以itemid为判断依据, 假如 $result[0]['itemid'] 大于 itemid , 那么就只有下一条, 反之就只有上一条.
|
评分
-
查看全部评分
|