我试图从两个表中删除数据,第一个表(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不止一个
答案 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中删除你删除两个表之间关系的记录。