以分层方式从php mysql中删除记录

时间:2012-05-14 08:05:21

标签: php mysql hierarchical-data

我想以分层方式从mysql中删除记录。 我有这样的数据库

id pid
1 0
2 1
3 2

我想删除以上所有记录。请在php mysql中回复正确的功能。

function content_deleted($content_id=0, $parent_id=0)
    {
        if($parent_id==0)
        {
            $query = $this->db->query("SELECT content_id FROM tbl_content WHERE content_id = $content_id");
        }
        else
        {
            $query = $this->db->query("SELECT content_id FROM tbl_content WHERE content_parent_id = $content_id");  
        }

        if($query->num_rows()>0)
        {
            foreach($query->result() as $res)
            {
                $id = $res->content_id;
                if($parent_id==0)
                {
                    $this->db->query("DELETE FROM tbl_content WHERE content_id = $id"); 
                }
                else
                {
                    $this->db->query("DELETE FROM tbl_content WHERE content_parent_id = $id");
                    $this->content_deleted($content_id, $id);   
                }
            }   
        }
    } 

这是我的功能我被困在这里它只能删除一条记录

3 个答案:

答案 0 :(得分:1)

关系数据库不容易为树结构提供帮助。如果您只有idparent_id字段,则必须执行大量循环和递归才能使用树。这就是Nested Sets or MPTT被发明的原因。您应该移动到树的模型,这个问题将自行解决。

答案 1 :(得分:0)

delete from your_table order by id desc

答案 2 :(得分:0)

使用php截断表:

$SQL = "TRUNCATE TABLE `table_name`";
mysql_query($SQL);

这将重置所有自动增量。并删除表格中的所有记录。