如何'删除一行后更新多行'?使用php和mysql

jvidinwx  于 2021-06-17  发布在  Mysql
关注(0)|答案(1)|浏览(337)

我很抱歉,这可能是一个愚蠢的问题,但我想得到一些帮助,在形成正确的语法对我的问题的逻辑。使用语言:php、mysql
以下是场景:
我有一张名为tbl\ U book的table

+----+------+-------+------------+
| id | code |  copy | date_added |
+----+------+-------+------------+
| 1  | IX3V |   1   | 2018-12-09 |
| 2  | IX3V |   2   | 2018-12-09 |
| 4  | BN9Z |   1   | 2018-12-10 |
| 5  | BN9Z |   2   | 2018-12-10 |
| 6  | BN9Z |   3   | 2018-12-11 |
| 7  | BN9Z |   4   | 2018-12-12 |
| 8  | BN9Z |   5   | 2018-12-12 |
+----+------+-------+------------+

现在,我想删除id=6。删除那一行之后,我想将所有复制集从1,2,4,5设置为1,2,3,4,其中code=bn9z。
预期产量:

+----+------+-------+------------+
| id | code |  copy | date_added |
+----+------+-------+------------+
| 1  | IX3V |   1   | 2018-12-09 |
| 2  | IX3V |   2   | 2018-12-09 |
| 4  | BN9Z |   1   | 2018-12-10 |
| 5  | BN9Z |   2   | 2018-12-10 |
| 7  | BN9Z |   3   | 2018-12-12 |
| 8  | BN9Z |   4   | 2018-12-12 |
+----+------+-------+------------+

这个问题是为我的项目,我很高兴勾选一个相关的解决方案。谢谢您。

dpiehjr4

dpiehjr41#

如果你知道 code 以及 copy 对于要删除的行,可以使用以下命令:

UPDATE `tbl_book`
SET `copy` = `copy`-1
WHERE `code` = `BN9Z` and `copy` > 3

更新
下面是一些代码,这些代码将删除行并稍后(按id)更新行。
mysql地址。。。函数已被折旧,并已从当前(7)版本的php中删除。改用mysqli函数。

include("db_connect.php");  //  Update to use mysqli functions instead of mysql functions.

$get_to_delete_no = "3";
//  Get the info from the row to be deleted
$rowinfo = mysqli_query("SELECT `id`,`code`,`copy` FROM `tbl_book` WHERE `id` = $get_to_delete_no");
if($rowinfo !== false) {
    $rslt = mysqli_query("DELETE FROM `tbl_book` WHERE `id` = $get_to_delete_no");
    if($rslt !== false) {
        $rslt = mysqli_query("UPDATE `tbl_book` SET `copy` = `copy` - 1 WHERE `copy` > ".$rowinfo[0][`copy`]." AND `code` = ".$rowinfo[0][`code`]);
    }
}

相关问题