如何删除db中不存在的文件

时间:2013-04-09 16:14:46

标签: php mysql sql

我想在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);
}

}
它给我写了一个惊喜     警告:取消链接(upload / Array)[function.unlink]:

1 个答案:

答案 0 :(得分:2)

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进行查询。然后,您还可以将查询转换为准备好的语句,这将有助于它更有效地运行。