如何“删除一行后更新多行”?使用PHP和MySQL
很抱歉,这可能是一个愚蠢的问题,但我想得到一些帮助,以获得在我的问题上形成正确语法的逻辑。 使用的语言:PHP、MySQL 以下是场景: 我有一张名为tbl_book的桌子如何“删除一行后更新多行”?使用PHP和MySQL,php,mysql,Php,Mysql,很抱歉,这可能是一个愚蠢的问题,但我想得到一些帮助,以获得在我的问题上形成正确语法的逻辑。 使用的语言:PHP、MySQL 以下是场景: 我有一张名为tbl_book的桌子 +----+------+-------+------------+ | id | code | copy | date_added | +----+------+-------+------------+ | 1 | IX3V | 1 | 2018-12-09 | | 2 | IX3V | 2 | 2
+----+------+-------+------------+
| 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 |
+----+------+-------+------------+
此问题适用于我的项目,我很乐意选择相关的解决方案。谢谢。如果您知道要删除的行的代码值和副本,您可以使用此选项:
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`]);
}
}
当你能做到这一点时,它会涉及更新几行。你可以考虑只删除具有最大拷贝值的行。我不能删除,我忘了放“DATEYAUD”列。如果要删除它,就好像添加新的拷贝。PS。我会更新表。当我把这个词冲过去时,数据库触发器就出现在我的头上。斯隆到B。e一个很好的建议@Markus如果使用InnoDB作为表引擎,你应该在一个事务中同时执行这两个qeuries,因为可能存在竞争条件。@RaymondNijland先生。我对如何执行仍然很困惑。先生,你能帮我吗?@Sloather-似乎我无法构建它。你能帮我吗?我做了以下几件事:includedBu connect.php;$get_to_delete_no=3;mysql_queryDELETE FROM tbl_book其中id='6';$sql=mysql_querySELECT*FROM tbl_book;而$row=mysql_fetch_数组$sql{$get_copy=$row[copy];mysql_queryUPDATE tbl_book SET copy='$get_copy'-1其中code='BN9Z'和copy>'get_to_delete_no'}复制列上的其余部分似乎变成了0。您能重建我的吗?谢谢。麻烦您了。