Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL从多个表中删除行_Php_Mysql - Fatal编程技术网

Php MySQL从多个表中删除行

Php MySQL从多个表中删除行,php,mysql,Php,Mysql,我有两个表users和pd,它们有一个公共列I\u uid 为了从两个表中删除i_uid为1010的一行,我在php脚本中使用mysqli::query发出了以下语句 DELETE FROM `users`,`pd` WHERE `users`.`i_uid`=`pd`.`i_uid` AND `users`.`i_uid` = 1010; 有什么问题吗?因为您要从多个表中删除行,唯一缺少的是指定将在哪些表中删除该行 DELETE `users`,`pd` FROM `users`, `pd

我有两个表users和pd,它们有一个公共列I\u uid

为了从两个表中删除i_uid为1010的一行,我在php脚本中使用mysqli::query发出了以下语句

DELETE 
FROM `users`,`pd`
WHERE `users`.`i_uid`=`pd`.`i_uid` AND `users`.`i_uid` = 1010;

有什么问题吗?

因为您要从多个表中删除行,唯一缺少的是指定将在哪些表中删除该行

DELETE `users`,`pd`
FROM `users`, `pd`
WHERE `users`.`i_uid`=`pd`.`i_uid` AND `users`.`i_uid` = 1010;
在上面的查询中,它将从两个表中删除行。我建议使用ANSI join更改语句,如下所示

DELETE  a, b 
FROM    users a
        INNER JOIN pd b
            ON a.i_uid = b.i_uid
WHERE  a.i_uid = 1010
如果要从用户表中删除


由于要从多个表中删除行,因此唯一缺少的是指定将在哪些表中删除该行

DELETE `users`,`pd`
FROM `users`, `pd`
WHERE `users`.`i_uid`=`pd`.`i_uid` AND `users`.`i_uid` = 1010;
在上面的查询中,它将从两个表中删除行。我建议使用ANSI join更改语句,如下所示

DELETE  a, b 
FROM    users a
        INNER JOIN pd b
            ON a.i_uid = b.i_uid
WHERE  a.i_uid = 1010
如果要从用户表中删除

使用Left Join并指定要删除其相应行的表

DELETE users, pd
FROM users, pd
LEFT JOIN pd
ON pd.i_uid = users.i_uid
WHERE users.i_uid = 1010
使用Left Join并指定要删除其相应行的表

DELETE users, pd
FROM users, pd
LEFT JOIN pd
ON pd.i_uid = users.i_uid
WHERE users.i_uid = 1010

其他答案是正确的,但因为没有人提到它,我会的。您可以使用InnoDB引擎并指定外键和级联删除。因此,每次删除用户时,它都会删除不同表中的所有引用行


阅读外键并删除级联

其他答案都是正确的,但由于没有人提到,我会这样做。您可以使用InnoDB引擎并指定外键和级联删除。因此,每次删除用户时,它都会删除不同表中的所有引用行


阅读外键,并在CASCADE上删除。为了保持简单,我建议只使用两个查询:

DELETE FROM `users` WHERE `i_uid` = 1010;
DELETE FROM `pd` WHERE `i_uid` = 1010;

为了保持简单,我建议只使用两个查询:

DELETE FROM `users` WHERE `i_uid` = 1010;
DELETE FROM `pd` WHERE `i_uid` = 1010;

当你尝试的时候它能工作吗?当你尝试的时候它能工作吗?thanx寻求帮助…你能解释一下连接语法吗…通常我以前是从…指定列名的…这是删除te行的源表。这是必需的,因为您的查询涉及多个表。我们不是在FROM之后指定这些表吗?那么为什么还要在它之前呢?FROM子句之前的表是删除记录的位置。FROM子句后面的表是搜索记录的位置。但是如果你只在一个表中删除,它是可选的。这对我不起作用。这是我的查询:从帖子中删除p,pc,l,c p内部连接帖子内容pc on p.post\u id=pc.post\u id内部连接喜欢l on p.post\u id=l.post\u id内部连接评论c on c.post\u id=p.post\u id,其中p.post\u id=406;thanx需要帮助…你能解释一下连接语法吗…通常我在…之前指定列名,这是删除te行的源表。这是必需的,因为您的查询涉及多个表。我们不是在FROM之后指定这些表吗?那么为什么还要在它之前呢?FROM子句之前的表是删除记录的位置。FROM子句后面的表是搜索记录的位置。但是如果你只在一个表中删除,它是可选的。这对我不起作用。这是我的查询:从帖子中删除p,pc,l,c p内部连接帖子内容pc on p.post\u id=pc.post\u id内部连接喜欢l on p.post\u id=l.post\u id内部连接评论c on c.post\u id=p.post\u id,其中p.post\u id=406;