从两个表中删除数据

时间:2015-01-11 12:02:15

标签: php mysql

我试图从两个表中删除数据,第一个表(maklumatakaun)有" id"作为其主键和第二个表(detailakaun)将id作为其外键。现在我的查询导致错误#1064

$idURL = $_GET['id'];

$query = "DELETE FROM detailakaun
          INNER JOIN maklumatakaun 
          WHERE maklumatakaun.id = detailakaun.id
          AND id = '$idURL'";

我使用此代码

回显数据ID
<a href="buang_akaun.php?id=<?php echo $id;?>

有人知道怎么做吗?

编辑:错误信息

  

#1064 - 您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以便在#JO; INNER JOIN附近使用正确的语法maklumatakaun WHERE maklumatakaun.id = detailakaun.id AND id =&#39; 53&#39;&#39;在第1行

编辑新错误 detailakaun有自己的AI id,这是idDetail,在内部表detailakaun有NoTelefon,KodLokasi和KodJenisAkaun列,可以有一个以上相同的maklumatakaun.id,现在我的问题是我不能删除,如果有&#39 ; s不止一个

3 个答案:

答案 0 :(得分:1)

如果您join需要ON子句,并且加入delete,那么您需要指定从哪个表中删除

DELETE m, d
FROM detailakaun d
INNER JOIN maklumatakaun m ON m.id = d.id
WHERE d.id = '$idURL'

答案 1 :(得分:0)

您可以设置触发器,以便在从一个表中删除记录时从第二个表中删除相应的记录。 看看这里:http://code.tutsplus.com/articles/introduction-to-mysql-triggers--net-12226

优点是你只需要执行一个查询,缺点是你可能有时间从第一个表中删除记录但是保留第二个表

答案 2 :(得分:0)

如果您指定了密钥,则无需经历任何连接条件。

$query = "DELETE FROM maklumatakaun 
          WHERE id = '$idURL'";

这将从两个表中删除记录。但是如果你指定了一个密钥,那么就不能从外键表unles中删除你删除两个表之间关系的记录。