php - 澄清 - 删除不在 mySQL 表中的文件

标签 php mysql glob

Delete files which are not in a mySQL TABLE

上面的链接指向一个 Stack Overflow 问题,其答案(我相信)非常接近我正在寻找的答案。实际上,我只是想进一步澄清给出的答案。


问题

I'm trying to delete files (picture files) in a folder only if they're not present in a specific database table.

Just like a check of filenames and if they're present in the table it's ok but if not delete them.

Any ideas how to do that?

接受的答案

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

我对 PHP 不太了解,但我不相信他们在这里指定服务器上的文件夹路径,是吗?我希望能够查看特定文件夹并检查该文件夹中的任何图像是否在任何数据库表中。如果不是,请删除该图像。

最佳答案

在调用 glob("*") 之前只需添加一行 chdir("")。然后你可以搜索你想看的目录。我刚刚在下面的电话中上升了一个级别。您可以指定您想要的任何目录。在执行删除之前,只需将 echo 语句添加到 $filename 以验证是否正在删除正确的文件。

chdir("../");
foreach(glob("*") as $filename) {
if (!in_array($filename, $do_not_delete)) {
    //delete them
}

关于php - 澄清 - 删除不在 mySQL 表中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44221439/

相关文章:

php - 在继续之前显示一条 JavaScript 消息

php - 403 禁止发布 HTML 标签

php - 更新数据库中表行的快捷方式?

mysql - 查找最近更新的行的快速方法是什么?

bash - 如何将 glob 表达式分配给 Bash 脚本中的变量?

tfs - 如何在小型匹配模式中同时使用 NOT 和 OR 进行过滤?

python - 有效检查单词是否与集合中的模式匹配(Python)

javascript - Laravel Vue.js 应用程序未运行

php - 我的注册表单 php 代码有什么问题

mysql - 创建主键时SQL语句语法错误