Php 删除不在mySQL表中的文件

Php 删除不在mySQL表中的文件,php,mysql,codeigniter,delete-file,Php,Mysql,Codeigniter,Delete File,我试图删除文件夹中的文件(图片文件),但前提是这些文件不在特定的数据库表中 就像检查文件名一样,如果它们存在于表中,则可以删除它们 有什么办法吗?只需从数据库中选择所有不应删除的图片,然后浏览所有文件 $result = mysql_query("SELECT filename FROM no_delete"); while($row = mysql_fetch_assoc($result)) { $do_not_delete[] = $row['filename']; } foreac

我试图删除文件夹中的文件(图片文件),但前提是这些文件不在特定的数据库表中

就像检查文件名一样,如果它们存在于表中,则可以删除它们


有什么办法吗?

只需从数据库中选择所有不应删除的图片,然后浏览所有文件

$result = mysql_query("SELECT filename FROM no_delete");
while($row = mysql_fetch_assoc($result)) {
   $do_not_delete[] = $row['filename'];
}

foreach(glob("*") as $filename) {
    if (!in_array($filename, $do_not_delete)) {
        //delete them
    }
}

我将通过编写一个脚本来实现这一点,该脚本获取目录中所有文件的列表,将它们存储在一个数组中(因为您使用的是php),然后逐个查询数据库以查看它们是否存在于表中

如果他们做了,那么什么也不做,如果他们不做,那么删除它

在日志文件中捕获您仅为历史记录而删除的名称也会很有帮助


您可以使用curl在命令行上运行它,甚至可以将它设置为计时作业(如果您在linux上)或计划任务(在windows上),这样它将自动运行。

使用scandir()获取文件夹的内容,并为每个数组值检查文件名是否存在于表中。如果没有,请使用unlink()删除文件。

您的表中有什么?图片的完整路径?数据库中有什么?文件名以及文件内容?