Я использую следующий код для удаления изображений из папки с помощью таблицы.
Это работало хорошо в течение нескольких месяцев (бегал один раз в месяц).
Затем он начал удалять изображения, которые находятся в таблице, я думаю, сравнение не удается.
Итак, я пытаюсь увидеть, что сравнивается (имя файла и имя файла таблицы).
Я не могу заставить 2 выстроиться в ряд, чтобы сравнить их.
Кроме того, структура dir, кажется, отключена ("." И "..").
Пожалуйста, смотрите распечатку внизу.
Если вам нужно увидеть результат, используйте
https://www.stampden.com/users/cron1_delete_images.php
// first put all files into an array
$images = scandir('russromei');
// create a new empty array that gonna hold all files from database
$files = [];
// new we select all files from database
// first make your query
$query = 'SELECT substr(value,41) FROM ppbv79_listings_media where value like "http://www.stampden.com/users/russromei/%"';
// create mysqli object
$mysqli = new Mysqli($dbhost,$dbuser,$dbpass,$dbname);
// prepare statement
// even tho this query is not vulnerable to sql injections i'm gonna use prepared statement
$stmt = $mysqli->prepare($query);
$stmt->execute();
$stmt->bind_result($file);
while($stmt->fetch()){ // insert all files into the array we created earlier
$files[] = $file;
}
$stmt->close();
$mysqli->close();
// now you have an array of all files from database and images in folder
// we are gonna go threw each image to check if it exist in the database
$ct=0;
foreach($images as $img)
{
if(!in_array($img,$files)) {
// delete file
$ct=$ct+1;
// unlink('russromei/'.$img);
// print("Delete file [". $img ."]<br><br>");
// print($ct." ".$img." ".$file."<br>");
print_r($images[$ct]." ---> ".$files[$ct]."<br>");
// print_r($files[$ct]."<br>");
}
}
unset($img);