phymyadmin中的连续行

8i9zcol2  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(352)

我希望每次在应用程序中单击next时自动获取连续行,该行获取下一条记录,例如从a1到a2,从a2到a3等等。
以下是我的表格结构:

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

pkln4tw61#

假设 code 列在表中是唯一的,并且假设我们在 code 命令,我们可以保存 code 返回给用户/浏览器的网页中当前行的值

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

(作为单击“下一步”按钮时提交的表单的一部分)
然后在处理表单提交的php脚本中,我们从表单中提取值,例如。

$code_prev = $_POST['code_current']

并在执行获取“next”行的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 以及 id 价值观。
where子句中的条件如下:

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

这样,如果我们拉取的上一行是code=a2id=2,那么获取“next”行的查询将等价于:

WHERE t.code >= 'A2'
  AND ( t.code > 'A2' OR t.id > 2 )

相关问题