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


how to delete files that not Exists show in db

我想在PHP中写一个代码去dir"上传",看看是否是一个文件,不存在于我的数据库并删除此文件,如果它找到。

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

给我写一个错误警告:unlink(upload/Array) [function]。分离:

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表中有一个条目;如果没有,就传递给unlink。我没有测试过这段代码,但它应该给你一个关于它是如何运行的想法。

注意事项:

  1. 如果目录中有目录怎么办?你应该添加一些检查来跳过它们。别忘了还有./../

  2. 如果..'..'..'..'etc'passwdblog中有一个条目怎么办?你应该添加一些检查,以确保$thisFile不是你不想删除的东西。

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