Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 删除数据库中的文件夹_Php_Sql_Algorithm - Fatal编程技术网

Php 删除数据库中的文件夹

Php 删除数据库中的文件夹,php,sql,algorithm,Php,Sql,Algorithm,我有画廊在网站上,我需要删除所有文件夹 我的scructure数据库:(g_文件夹) 比如说 那么,我是否可以删除文件夹并删除所有父文件夹 递归 function delete(folder) { count = select id from g_folder where id_parent = folder if(count == 0) deleteFolderById(folder) while(count != 0) { array = select i

我有画廊在网站上,我需要删除所有文件夹

我的scructure数据库:(g_文件夹)

比如说

那么,我是否可以删除文件夹并删除所有父文件夹

递归

function delete(folder)
{
  count = select id from g_folder where id_parent = folder
  if(count == 0)
    deleteFolderById(folder)

  while(count != 0)
  {
     array = select id from g_folder where id_parent = folder
     for i in range(count)
     {
       deleteFolderById(array[i])
     }
     count = select id from g_folder where id_parent = folder
     delete(array[0])          
  } 

}
我的算法错了,请帮忙!谢谢大家

试着这样做:

function deletefolder($parentid)
{
    $query="select * from g_folder where parentid=".$parentid;
    $result=mysql_query($query);
    if(mysql_num_rows($result)>0)
    {
        while($row=mysql_fetch_array($result))
        {
            deletefolder($row['id']);
        }
        $fdquery="delete from g_folder where parentid=".$parentid;
        $fdresult=mysql_query($fdquery);
    }

    $sdquery="delete from g_folder where id=".$parentid;
    $sdresult=mysql_query($sdquery);
}

deletefolder(2);

这是什么数据库引擎?您可能应该在数据库本身中使用带有
ON DELETE CASCADE
的外键来实现这一点,并完全避免应用程序端逻辑。是否递归删除所有父级?你确定吗?这可能会刷新整个表。为什么不能使用“从g_文件夹中删除”直接删除,其中“父项id=$Parents”如果一个项的id=1,父项id=0,则子项和父项都位于同一文件夹中。那么为什么不删除holde文件夹一次呢?
function deletefolder($parentid)
{
    $query="select * from g_folder where parentid=".$parentid;
    $result=mysql_query($query);
    if(mysql_num_rows($result)>0)
    {
        while($row=mysql_fetch_array($result))
        {
            deletefolder($row['id']);
        }
        $fdquery="delete from g_folder where parentid=".$parentid;
        $fdresult=mysql_query($fdquery);
    }

    $sdquery="delete from g_folder where id=".$parentid;
    $sdresult=mysql_query($sdquery);
}

deletefolder(2);