按id和parent_id删除

时间:2012-10-07 13:59:39

标签: php mysql sql-delete

我有一张类似于此的表格:

rule_id    parent_id
1          0
2          0
3          2
4          2
5          3

当我使用DELETE查询并删除时,假设 id 2 ,我想删除 parent_id 作为该ID的行。

成功删除后,表格应如下所示:

rule_id    parent_id
1          0
5          3

所以 2 的所有内容现在都已消失。

我已经尝试过了,我确信它会起作用,但事实并非如此。

$sql = 'DELETE FROM ' . RULES_TABLE .   
    ' WHERE rule_id = ' . (int) $rule_id . 
        (($type == 'cat') ? ' AND parent_id = ' . (int) $rule_id : '');

3 个答案:

答案 0 :(得分:3)

可能很傻但你为什么不使用INNODB旧的良好参照完整性?

使用(rule_id, parent_id)子句设置反身外部引用键ON DELETE CASCADE可以轻松解决问题。

答案 1 :(得分:1)

你的where子句中需要一个'OR'。

DELETE FROM RULES_TABLE WHERE rule_id=? OR parent_id=?

答案 2 :(得分:0)

将“AND”更改为“OR”:

$sql = 'DELETE FROM ' . RULES_TABLE .   
' WHERE rule_id = ' . (int) $rule_id . 
    (($type == 'cat') ? ' OR parent_id = ' . (int) $rule_id : '');