遍历子目录并删除与数据库条目不匹配的所有文件

时间:2012-06-19 17:00:05

标签: php mysql subdirectory

我一直在开发一个严重依赖图像的网站,所以我想在数据库或我存储它们的子目录中实现清理任何错误的函数。我的删除功能数据库条目如果图像不在子目录中,但我的函数删除子目录中的图像(如果它们不在数据库中)似乎不起作用。这是我的代码(假设在MySQL数据库上名为“images”的表上有一个名为“location”的条目,有一个名为“images”的子目录,所有图像都有一个jpg扩展名,所有上传的图像都给出了数据库中与子目录中相同的键:)

foreach(glob("images/*.*") as $entry)
    {   
        if (!mysql_num_rows(mysql_query("SELECT * FROM images WHERE location = '$entry'")))
        {
            if (preg_match("/jpg/", $entry))
            {
                unlink ($entry);
            }   
        }
    }

我做了调试,子目录中的条目与数据库中的条目匹配,但尽管它们相同,但SQL查询返回空结果。

2 个答案:

答案 0 :(得分:3)

glob返回带有路径的条目,因此它就像images/foo.jpg。如果它存储在数据库中,只有文件名,那就是它不匹配的原因。

答案 1 :(得分:1)

除非您提供的代码不是实际代码,否则我的猜测是您没有通过unlink();的绝对路径。您只传递相对路径(例如“images / test.jpeg”),并且脚本找不到该文件。