0

嗨,我目前正在使用一个系统来比较 2 个人键入的 2 个页面并进行编辑,但首先我将数据每行插入到数据库中,所以输出看起来像这样

这是数据库

id   pagenum  linenum   data   bookname
1       1        1      one    twilight
2       1        2      two    twilight
3       1        3      three  twilight
4       1        4      four   twilight
5       1        5      five   twilight
6       1        6      six    twilight

但我想在 id 2 和 3 之间插入 2 行并更新它上面和下面的 linenumber 所以我要查询上面的行号我将把它放在哪里所以查询 linenumb where id= 2+1 所以 3 将是我将添加的 2 行的起始行号因此它将是第 3 行和第 4 行,但困境是会有 2 pagenum=1 linenum=3 和 pagenum=1 和 linenum=4 有人可以帮助我解决结构如何修复它

所以毕竟数据库应该是这样的

id   pagenum  linenum   data   bookname
1       1        1      one    twilight
2       1        2      two    twilight
7       1        3    newline  twilight //this is the 1st line i added
8       1        4    newline  twilight //this is the 2nd line i added
3       1        5      three  twilight
4       1        6      four   twilight
5       1        7      five   twilight
6       1        8      six    twilight

我有一个难题我应该像那样将它们放在添加行的行号中吗

就像插入... 2 和 3 计数,其中起始值应该是 3+1 计数将是它将更新和增加多少次,然后更新底部页面或将行号留空并计算整个页面和更新它们

还是我应该将所有数据向下移动 2 行?像这样

id   pagenum  linenum   data   bookname
1       1        1      one    twilight
2       1        2      two    twilight
3       1        3    newline  twilight 
4       1        4    newline  twilight 
5       1        5      three  twilight
6       1        6      four   twilight
7       1        7      five   twilight//i moved this 2 rows down and so this is the inserted value
6       1        8      six    twilight//i moved this 2 rows down and so this is the inserted value

这是最简单和最有效的方法

4

1 回答 1

1

确定您将从 (3) 开始插入的行号。

然后获取您要插入的行数 (2)。

<?php
    $start = 3;
    $rows = 2;
?>

然后你运行这个查询:

UPDATE table SET linenum = linenum + $rows WHERE linenum >= $start

这将使您的表格看起来像:

id   pagenum  linenum   data   bookname
1       1        1      one    twilight
2       1        2      two    twilight
3       1        5      three  twilight
4       1        6      four   twilight
5       1        7      five   twilight
6       1        8      six    twilight

现在你的新行有一个间隙,所以插入它们。

于 2013-10-17T15:36:58.620 回答