私は画像に大きく依存しているサイトで作業しているので、データベースまたは画像を保存しているサブディレクトリのいずれかに、問題が発生した場合にクリーンアップする関数を実装したいと思います。画像がサブディレクトリにない場合は機能しますが、データベースにない場合にサブディレクトリ内の画像を削除する機能が機能していないようです。これが私のコードです(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クエリは空の結果を返していました。