我想在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]:
答案 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
表中有一个条目;如果没有,则传递给取消链接。我没有测试过这段代码,但它应该让你知道它是如何运行的。
几点说明:
如果目录中有目录怎么办?您应该添加一些检查以跳过它们。不要忘记你会在那里./
和../
。
如果blog
..\..\..\..\etc\passwd
中有条目怎么办?您应该添加一些检查,以确保$thisFile
不是您不想删除的内容。
这是使用mysql;这已被弃用,您应该考虑迁移到mysqli
或PDO
进行查询。然后,您还可以将查询转换为准备好的语句,这将有助于它更有效地运行。