植物寄生虫连续排

时间:2018-04-23 02:46:16

标签: mysql sql phpmyadmin

我希望每次在我的应用程序中单击下一步时自动连续行,该行获取下一条记录,例如从A1到A2,从A2到A3等等。

这是我的表结构:

|id|code 
|1 | A1
|2 | A2
|3 | A3
|4 | A4

1 个答案:

答案 0 :(得分:0)

假设code列在表中是UNIQUE,并假设我们以code顺序返回行,我们可以在网页中保存当前行的code值返回发送给用户/浏览器

<input type="hidden" name="code_current" value="A2"/>

(作为单击“下一步”按钮时提交的表单的一部分)

然后在处理表单提交的PHP脚本中,我们从表单中提取值,例如

$code_prev = $_POST['code_current']

并在执行获取“下一行”的SQL时使用该值。这将是一个code值大于前一个值的行。例如:

$sql = 'SELECT t.id
             , t.code
          FROM mytable t
         WHERE t.code > ?
         ORDER BY t.code
         LIMIT 1';

假设我们已经配置PDO连接$dbh以在检测到错误时抛出异常......

  $sth = $dbh->prepare($sql);
  $sth->execute($code_prev);

我们在网页的隐藏输入中包含code列(我们从数据库中检索到的行)的值,在用户单击“下一步”时返回的表单上,...

  if( $row = $sth->fetch(PDO::FETCH_ASSOC) {

      echo '<input type="hidden" name="code_current" value="' 
         . htmlspecialchars( $row['code'] )
         . '"/>';

  }

这假定行按code值按顺序返回。如果以id顺序返回,则使用id列代替code

如果code不唯一,也就是说,如果有(或可以)多个行具有相同的code值,我们可以同时使用code和{{1} }值。

WHERE子句中的条件是这样的:

id

如果我们提取的上一行是code = A2 id = 2,那么获取“next”行的查询将等同于:

 WHERE t.code >= ? 
   AND (t.code > ? OR t.id > ? )