Php 按id和父\u id删除
我有一张类似于此的桌子:Php 按id和父\u id删除,php,mysql,sql-delete,Php,Mysql,Sql Delete,我有一张类似于此的桌子: rule_id parent_id 1 0 2 0 3 2 4 2 5 3 当我使用DELETE查询和DELETE(比如说id 2)时,我想删除具有父id作为该id的行 成功删除后,该表应如下所示: rule_id parent_id 1 0 5 3 所以所有曾经的2现在都消失了 我试过这个,我确信它会起作用,但它没有 $sql
rule_id parent_id
1 0
2 0
3 2
4 2
5 3
当我使用DELETE查询和DELETE(比如说id 2)时,我想删除具有父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 : '');
在where子句中需要一个'OR'
DELETE FROM RULES_TABLE WHERE rule_id=? OR parent_id=?
在where子句中需要一个'OR'
DELETE FROM RULES_TABLE WHERE rule_id=? OR parent_id=?
将“和”改为“或”:
将“和”改为“或”:
可能有点傻,但为什么不使用INNODB提供的旧的良好引用完整性呢
用DELETE CASCADE上的
子句设置一个自反的外部引用键(rule\u id,parent\u id)
可以很容易地解决这个问题。可能很愚蠢,但是为什么不使用INNODB提供的旧的良好引用完整性呢
使用DELETE CASCADE上的子句设置自反外部引用键(rule\u id,parent\u id)
,可以很容易地解决这个问题。rule\u id是什么?你的表格描述中没有提到。我想你不需要它吗?当然,您所需要的只是“从父项id=”所在的表中删除”。(int)$ruleid
我确实需要它。如果rule_id不是任何行的父行,但我仍然想删除该rule id呢?啊,我没有从问题中得到答案-在这种情况下,请参阅pilotcam的答案。当然,最好的方法是定义关系外键和delete CASCADE上的
?rule_id是什么?你的表格描述中没有提到。我想你不需要它吗?当然,您所需要的只是“从父项id=”所在的表中删除”。(int)$ruleid
我确实需要它。如果rule_id不是任何行的父级,但我仍然想删除该rule id呢?啊,我不是从问题中得到的-在这种情况下,请参阅pilotcam的答案。当然,最好的方法是在delete CASCADE上定义关系外键和?