0

私は画像に大きく依存しているサイトで作業しているので、データベースまたは画像を保存しているサブディレクトリのいずれかに、問題が発生した場合にクリーンアップする関数を実装したいと思います。画像がサブディレクトリにない場合は機能しますが、データベースにない場合にサブディレクトリ内の画像を削除する機能が機能していないようです。これが私のコードです(MySQLデータベースの「images」というテーブルに「location」というエントリがあり、「images」というサブディレクトリがあり、すべての画像にjpg拡張子が付いており、アップロードされたすべての画像にデータベース内のサブディレクトリと同じキー):

foreach(glob("images/*.*") as $entry)
    {   
        if (!mysql_num_rows(mysql_query("SELECT * FROM images WHERE location = '$entry'")))
        {
            if (preg_match("/jpg/", $entry))
            {
                unlink ($entry);
            }   
        }
    }

デバッグを行ったところ、サブディレクトリのエントリがデータベースのエントリと一致しましたが、それらが等しいにもかかわらず、SQLクエリは空の結果を返していました。

4

2 に答える 2

3

globパスを含むエントリを返すため、のようになりますimages/foo.jpg。ファイル名だけでデータベースに保存されている場合は、一致しないのはそのためです。

于 2012-06-19T17:07:07.267 に答える
1

提示したコードが実際のコードでない限り、絶対パスをに渡していないと思いますunlink();。相対パス(「images / test.jpeg」など)のみを渡しており、スクリプトはそのファイルを見つけることができません。

于 2012-06-19T17:05:26.180 に答える