我想在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。我没有测试过这段代码,但它应该给你一个关于它是如何运行的想法。
注意事项:
如果目录中有目录怎么办?你应该添加一些检查来跳过它们。别忘了还有
./
和../
如果
..'..'..'..'etc'passwd
的blog
中有一个条目怎么办?你应该添加一些检查,以确保$thisFile
不是你不想删除的东西。这是使用mysql;这是不赞成的,您应该考虑将查询迁移到
mysqli
或PDO
。然后,您还可以将查询转换为准备好的语句,这将有助于它更有效地运行。