php - 如何删除主分类和子分类

标签 php mysql

当我删除主类别时,我不知道如何删除子子类别。

我提出了两个问题。当我删除子和子子时,这有效。但如果我要删除的类别是主猫。我无法删除 subs sub。

如果id为1,我应该怎么做才能删除汽车、菲亚特和 Pandas ?

cats_id cats_parentid cats_name 
1           0           car
2           1          fiat 
3           2          panda

mysql_query("DELETE FROM cats 
            WHERE cats_id='".$id."'") or die(mysql_error()); 

mysql_query("DELETE FROM cats 
            WHERE cats_parentid='".$id."'") or die(mysql_error()); 

最佳答案

您可以像这样使用递归函数调用(在 PHP 中):

function delete_subcats($id) {
  $res = mysql_query('SELECT cats_id FROM cats WHERE cats_parentid = '.$id);

  if ($res) {
    while ($row = mysql_fetch_assoc($res))
      delete_subcats($row['cats_id']);
  }

  mysql_query('DELETE FROM cats WHERE cats_id = '.$id);
}

或者,如果您的表使用 InnoDB 引擎,则需要创建外键

ALTER TABLE cats ADD FOREIGN KEY (cats_parentid) REFERENCES cats(cats_id) ON DELETE CASCADE;

删除父记录后,所有连接的记录将被MySQL数据库删除,无需其他查询。

关于php - 如何删除主分类和子分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6150964/

相关文章:

sql - MySQL select、between、AND、OR子句及查询问题

php - 要在 latin1_swedish_ci 表 MYSQl 上插入的数据 UTF-8

php - 在 PHP :how can I use include() Function which parameter is variable?

php - 无法使用新的 MySQL 用户连接到 MySQL

php - MySQL 在一个查询中选择具有唯一行的随机行

PHP 无法连接到 Live Site 上的 Sphinx

php - 从Mysql中获取数据到php中

php - 如何在 AJAX 实时聊天中实现聊天审核?

php - 带有命名空间的小型 PHP MVC 框架

sql - 选择一行,其中 1=a, 2=b OR 1=b, 2=a