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

标签 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 查询返回的是空结果。

最佳答案

glob 返回带有路径的条目,因此它类似于 images/foo.jpg。如果它仅与文件名一起存储在数据库中,这就是它不匹配的原因。

关于php - 遍历子目录并删除所有与数据库条目不匹配的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11105779/

相关文章:

c++ - 递归走目录问题

php - 需要对同一个表上的多个连接的 SQL 查询执行数学运算

php - PHP 的 Useragent 解析库?

PHP 不适用于 ssl 连接

php - 如果 URL 具有某些文件扩展名,RackSpace Cloud 会删除 $_SESSION

java - 开发 JDBC 驱动程序

php - mysql 中多个商店的假期

php 从数据库中选择不显示正确的结果

c++ - 如何在 rstudio 上为使用子目录内 src 文件夹中的 C/C++ 文件的包构建和加载共享库?

javascript - 从多级文件夹中获取子文件夹