-6

階層的に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);   
                }
            }   
        }
    } 

これは私の機能です。ここで立ち往生しています。1つのレコードのみを削除します

4

3 に答える 3

1

リレーショナルデータベースは、ツリー構造に適していません。idとフィールドしかない場合はparent_id、ツリーを操作するために多くのループと再帰を実行する必要があります。そのため、ネストされたセットまたはMPTTが発明されました。あなたはあなたの木のためにそのモデルに移動するべきです、そしてこの質問はそれ自身を解決します。

于 2012-05-14T08:09:26.843 に答える
0
delete from your_table order by id desc
于 2012-05-14T08:07:29.527 に答える
0

php でテーブルを回転するには:

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

これにより、すべての自動インクリメントがリセットされます。テーブル内のすべてのレコードを削除します。

于 2012-05-14T08:14:55.817 に答える