我一直在一个严重依赖图像的网站上工作,所以我想实现在数据库或我存储它们的子目录中出现任何错误时进行清理的功能。我的删除功能如果图像不在子目录中,则数据库条目有效,但如果图像不在数据库中,我删除子目录中图像的功能似乎不起作用。这是我的代码(假设在 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 查询返回的是空结果。
最佳答案
glob
返回带有路径的条目,因此它类似于 images/foo.jpg
。如果它仅与文件名一起存储在数据库中,这就是它不匹配的原因。
关于php - 遍历子目录并删除所有与数据库条目不匹配的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11105779/