删除不在mySQL TABLE中的文件

时间:2012-01-15 11:34:55

标签: php mysql codeigniter delete-file

我正在尝试删除文件夹中的文件(图片文件),只要它们不存在于特定的数据库表中。

就像检查文件名一样,如果它们出现在表格中就可以了,但如果没有删除它们。

任何想法如何做到这一点?

3 个答案:

答案 0 :(得分:3)

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

$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
    }
}

答案 1 :(得分:0)

我会通过编写一个脚本来处理这个问题,该脚本列出了目录中的所有文件,将它们存储在一个数组中(因为你使用的是php)然后逐个查询你的数据库以查看它们是否存在于表

如果他们这样做,那么什么也不做,如果不这样做则删除它。

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

您可以使用curl在命令行运行此命令,甚至将其设置为chron作业(如果您使用的是Linux)或计划任务(在Windows上),以便它自动运行。

答案 2 :(得分:0)

使用scandir()http://php.net/manual/en/function.scandir.php获取文件夹的内容,并为每个数组值检查表中是否存在文件名。如果没有,请使用unlink()http://www.php.net/manual/en/function.unlink.php

删除该文件