gpt4 book ai didi

php - 如何删除数据库中不存在的文件

转载 作者:行者123 更新时间:2023-11-29 06:50:13 26 4
gpt4 key购买 nike

我想用 php 写一段代码转到目录“上传”并查看是否是我的数据库中不存在的文件如果找到,则删除此文件。

$like = scandir(upload);
$myFile1 = upload;
$myFile1 .= '/';
$myFile1 .= $like;


$rs = mysql_query('SELECT url from blog');
while(list($url) = mysql_fetch_row($rs))
{
if($like != $url){
unlink($myFile1);
}

}

它给我写了一个错误 警告:取消链接(上传/数组)[function.unlink]:

最佳答案

scandir 返回一个文件数组;您需要遍历该数组,以单独检查每个数组:

$like = scandir('upload');

foreach ($like as $thisFile) {
$rs = mysql_query("SELECT url FROM blog WHERE url='$thisFile'");
if (! mysql_num_rows($rs)) {
if($thisFile != "." and $thisFile != ".."){
unlink ('upload/' . $thisFile);
}

}
}

您正在检查该目录中的每个文件,看它是否在 blog 表中有一个条目;如果没有,则将其传递给取消链接。我没有测试过这段代码,但它应该能让您了解它是如何运行的。

一些注意事项:

  1. 如果目录中有目录怎么办?您应该添加一些检查以跳过它们。不要忘记您将在其中包含 ./../

  2. 如果 blog 中有条目 ..\..\..\..\etc\passwd 怎么办?您应该添加一些检查以确保 $thisFile 不是您不想删除的内容。

  3. 这是使用mysql;这已被弃用,您应该考虑迁移到 mysqliPDO 进行查询。然后,您还可以将查询转换为准备好的语句,这将有助于它更高效地运行。

关于php - 如何删除数据库中不存在的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15907152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com