2010-12-21 17 views
0

上の場合、私は、次の形式のテーブルとMySQLデータベースを持っている:削除行画像ではないサーバー

ID:1
日:2010-12-19
イメージ:5d61240f-7-ACA-d34b -19-12-10-15-36.jpg
キャプション:Merry Xmas

この表の各行を確認し、画像がギャラリーフォルダ内にあることを確認するPHPスクリプトを作成したいサーバ。イメージがギャラリーフォルダにない場合は、データベースからこの行を削除します。これをやり遂げる方法についてのいくつかの指針は非常に高く評価されるでしょう。

ありがとうございます!

+0

ええ、データベースからすべての行を読んで、画像が存在しない場合は、行を削除してください...もう一度あなたの質問は何ですか? – Bobby

答えて

0

が迅速だった

<?php 

    define ("GALLERY_ROOT", "/path/to/gallery/"); 

    $mysqli = new MySQLi ($host, $username, $password, $db); 

    $result = $mysqli -> query (" 
     SELECT 
      id, 
      image 
     FROM 
      table 
    "); 

    if ($result){ 
     while ($row = $result->fetch_assoc()) { 
      if (!is_file (GALLERY_ROOT . $row['image'])){ 
       $mysqli -> query (" 
        DELETE FROM 
         table 
        WHERE 
         id = '" . $row['id'] . "' 
        LIMIT 1 
       "); 

       print "Deleted " . $row['id'] . "<br />"; 
      } 
     } 

     $result -> free(); 
    } 

    $mysqli -> close(); 

    print "Congratz!! All invalid rows has been deleted!"; 
?> 

を試してみてください、私は実際にそれを実行してみてくださいませんでした。

また、多くの行がある場合は、すべての行を一度に選択することを再考することをおすすめします。しかし、再びそれがどのように動作するか私に連絡してください

+0

ありがとうございます。このコードは初めての作業でした! –

0

[OK]を... mysql_またはmysqli_機能、および'DELETE FROM images WHERE id = ?'、​​3210またはDirectoryIteratorfile_exists()を使用しています。 :)

これが役に立ちます。さらに詳しい情報を提供すれば、より詳細なアドバイスを得ることができます。これまでに何を試しましたか?

EDIT:私は間違っています。既にファイル名があるので、ディレクトリ機能は必要ありません。 dirname(__FILE__)が便利かもしれません。