Php MySQL中的删除

Php MySQL中的删除,php,mysql,Php,Mysql,我正在使用PHP和MySQL创建一个drop box系统。我面临的问题是,我需要删除一个文件夹,并删除其中的所有文件夹和文件。它适用于两个文件夹,但当我有3个文件夹时,它不会删除它们。下面是PHP中的代码。请帮帮我 <?php session_start(); require 'connection.php'; $folderid = $_GET['folderid']; function rrmdir($dir) { if (is_dir($dir)) { $objects =

我正在使用PHP和MySQL创建一个drop box系统。我面临的问题是,我需要删除一个文件夹,并删除其中的所有文件夹和文件。它适用于两个文件夹,但当我有3个文件夹时,它不会删除它们。下面是PHP中的代码。请帮帮我

<?php
session_start(); 
require 'connection.php';
$folderid = $_GET['folderid'];


function rrmdir($dir) {  
if (is_dir($dir)) {
$objects = scandir($dir);
foreach ($objects as $object) {
  if ($object != "." && $object != "..") {
    if (filetype($dir."/".$object) == "dir") 
       rrmdir($dir."/".$object); 
    else unlink   ($dir."/".$object);
  }
}
reset($objects);
rmdir($dir);
 }
  $delete = mysql_query("DELETE FROM file WHERE id='$folderid'");
}




if($folderid != ""){
$result = mysql_query("SELECT file.path FROM ftpdb.file WHERE ftpdb.file.fileID =         $folderid");
$qry = mysql_fetch_assoc($result);
$dir = $qry['path'];
//Calls a function which deletes all the files and folder in a pathy specified above
rrmdir($dir);
//Delete From database files and folders if the folderID is not null 
$delete = mysql_query("DELETE FROM file WHERE fileID='$folderid' OR parentFolder = '$folderid'");
$deleteFiles = mysql_query("DELETE FROM file_files WHERE folder_id = '$folderid'");
$_SESSION['error'] = "Folder has been deleted";
header("location: client.php");
}else{
$_SESSION['error'] = "Error occured please try again";
header("location: client.php");
}
?>
这是我在删除测试中的home而不是testing时设法删除test文件夹的数据库。我认为sql语句是不正确的 试试这个

$result = mysql_query("SELECT file.path FROM ftpdb.file WHERE ftpdb.file.fileID ='$folderid'");

我相信你会想自己去发现的。让我为您提供一个合适的谷歌链接:

如果您想知道如何将任意复杂的select语句转换为delete语句:


从“从表中选择id”中的“从表中删除id”只有一个值$folderid。想象一下,如果rrmdir递归很深,会删除很多文件夹。您无法通过删除$folderid和以$folderid为父对象的对象来捕获所有这些内容。只有一层深

您的SQL代码需要进入rrmdir内部,以便您也可以递归地从数据库中删除内容

然后,要删除所有文件夹,您需要:

查找每个文件夹的ID。您可以在循环子对象时从SQL中提取该参数,并将其作为第二个参数传递给rrmdir。 或者,按路径名而不是ID查找要删除的记录。 我还注意到,您的上一个记录在//测试时有两个斜杠。这将使通过路径查找匹配变得更加困难!我建议在路径进入数据库之前将其展平


我也在考虑制作自己的Dropbox,但我计划使用类似的东西,由几个shellscripts驱动。

它正在删除问题是thirg文件夹的id为81,sql语句只删除id为72的文件夹