0

我一直在一个严重依赖图像的网站上工作,因此我想实现在数据库或我存储它们的子目录中出现任何问题时进行清理的功能。如果出现问题,我的功能会删除数据库条目该图像不在子目录中,但如果图像不在数据库中,我删除子目录中的图像的功能似乎不起作用。这是我的代码(假设在 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 查询返回的是空结果。

4

2 回答 2

3

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

于 2012-06-19T17:07:07.267 回答
1

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

于 2012-06-19T17:05:26.180 回答