我想检查这个文件夹中是否有不在mysql数据库中的文件名,但我似乎找不到方法,因为获取mysql数据的循环必须在读取目录的循环中(据我所知),这会打乱整个过程。有没有其他方法可以做到这一点:
if ($handle = opendir('video/test')) {
while (false !== ($entry = readdir($handle))) {
if ($entry !== "." && $entry !== ".."){
$delfile = "SELECT * FROM files WHERE filename <> '$entry'";
$delfile = $db->query($delfile);
while($row = $delfile->fetch_assoc()){
echo $row['filename'];
}
}
}
closedir($handle);
}
您可以使用glob来获取文件名数组
$filenames = glob( 'video/test' );
然后在中使用MySQL检查表
$sql = sprintf( 'select * from files where filename not in ("%s")', implode( '","', $filenames ) );
没有循环!