0

このフォルダに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);
}
4

1 に答える 1

1

globを使用してファイル名の配列を取得できます

$filenames = glob( 'video/test' );

次に、MySQLを使用てテーブルをチェックします

$sql = sprintf( 'select * from files where filename not in ("%s")', implode( '","', $filenames ) );

ループなし!

于 2013-02-08T02:36:22.023 に答える