将文件夹内容与mysql数据进行比较


compare folder content with mysql data

我想检查这个文件夹中是否有不在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 ) );

没有循环!