在数据库中插入行并更新它下面的行

时间:2013-10-17 15:11:31

标签: php mysql sql database

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

一个

2

3

4

5

6

这是数据库

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行并更新它上面和下面的亚麻布 所以我要查询上面的行号,我将把它放在哪里查询linenumb,其中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

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

1 个答案:

答案 0 :(得分: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

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