Php 从MySQL回显下一行

Php 从MySQL回显下一行,php,mysql,Php,Mysql,为了选择MySQL中的前一行,我使用了下面的脚本,它工作得非常完美: <?php $previous = $row['id'] - 1; $stmt = $db->query("SELECT * FROM data WHERE id = $previous"); while($row =$stmt->fetch()){echo '<a href="'.$row['link'].'">'.$row['title'].'</

为了选择MySQL中的前一行,我使用了下面的脚本,它工作得非常完美:

<?php
$previous = $row['id'] - 1;
$stmt = $db->query("SELECT * FROM data WHERE id = $previous");
while($row =$stmt->fetch()){echo '<a href="'.$row['link'].'">'.$row['title'].'</a>';}
?>
为了选择下一行,我想使用以下脚本:

<?php
$next = $row['id'] + 1;
$stmt = $db->query("SELECT * FROM data WHERE id = $next");
while($row =$stmt->fetch()){echo '<a href="'.$row['link'].'">'.$row['title'].'</a>';}
?>

这将获取数据库的第一条记录,而不是下一行。

检索前一行值时,将数据写入$row,因此,在尝试获取下一行时,$row['id']的值实际上是前一行id

所以存储值

$currentID = $row['id'];
$previous = $currentID - 1;

// Other code
$next = $currentID + 1;

这不是使用mysql查询的方式,您只需要运行一个查询,然后循环查询结果

或者像

<?php
$stmt = $db->query("SELECT * FROM data ORDER BY id");
while($row =$stmt->fetch()){
  echo '<a href="'.$row['link'].'">'.$row['title'].'</a>';
}
?>


不需要在id中添加“1”并获取数据。这是个坏主意。相应地,如果您想要下一条记录,那么您应该选中一条大于,否则使用一条小于作为上一条记录。简单地说

$id=$row['id'];
下一步:

以前的:

select * from <yout_table> where id = (select max(id) from <yout_table> where id < '$id')

这是一个坏主意:你不应该在ID列的值中添加意义。甚至不是,也许只是为了不确定行的顺序。如果有一天你决定删除第4行呢?如果仍然选择使用ID列:其中ID>3按ID排序限制1@IvoP,您的评论似乎暗示不应使用id来确定行的顺序,但您接着说使用id>3 order BY id。那么这是否意味着它可以用于确定顺序?我首先说您不应该这样做。但如果你真的选择使用身份证,那么。。。。将其与社会安全进行比较。在许多国家,一个人的年龄和这个身份证之间没有联系。人们仍然可以按这个号码排列一份名单。或者用自己的邮政编码。但尝试不再使用ID列,然后标识一行。尽你所能。切勿将遗忘的记录放在两条记录之间。前一条记录的ID值应最大,且小于当前记录的ID值。这样,您仍然可以删除数据库中的记录谢谢大家的大力帮助!奈杰尔斯的回答起了作用:-
select * from <yout_table> where id = (select min(id) from <yout_table> where id > '$id')
select * from <yout_table> where id = (select max(id) from <yout_table> where id < '$id')