【问题标题】:deleting data from two tables从两个表中删除数据
【发布时间】:2015-01-11 12:02:15
【问题描述】:

我正在尝试从两个表中删除数据,第一个表(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 服务器版本相对应的手册,以在第 1 行的 'INNER JOIN maklumatakaun WHERE maklumatakaun.id = detailakaun.id AND id = '53'' 附近使用正确的语法

编辑新错误 detailakaun 有自己的 A.I id,即 idDetail,在 table detailakaun 中有列 NoTelefon , KodLokasi 和 KodJenisAkaun 可以在一个相同的 maklumatakaun.id 下有多个,现在我的问题是如果有多个,我不能删除

【问题讨论】:

  • 请添加错误信息。
  • 也许您必须删除$idURL 前后的'。现在 ID 被视为字符串,但我认为它是一个整数!
  • 如果两个表是用key连接的,那么删除主键表记录也会删除外键表记录。

标签: php mysql


【解决方案1】:

如果您是join,则需要一个ON 子句,并且在加入delete 时,您需要指定从哪个表中删除

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

【讨论】:

  • 假设我要更新数据,是不是和这个类似?
  • 嗨,@juergend 先生,我发现这段代码有新问题,您能看看我的新编辑吗?非常感谢先生
  • 你错过了ON m.id = d.id 部分
  • 那位先生是什么意思?
  • 很抱歉,如果您无法将您的查询与我发布的查询进行比较并且找不到差异,那么我无法帮助您。仔细看看。
【解决方案2】:

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

优点是你只需要执行一个查询,缺点是你可能想从第一个表中删除一条记录但保持第二个表不变

【讨论】:

    【解决方案3】:

    如果有您指定的键,则无需经过任何连接条件。

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

    这将从两个表中删除记录。但是如果存在您指定的键,那么您不能从外键表中删除记录,除非您删除两个表之间的关系。

    【讨论】:

      猜你喜欢
      • 2013-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-01
      • 2013-05-09
      • 1970-01-01
      相关资源
      最近更新 更多