Технологии

Здравствуйте. Помогите с написанием кода. Написал код Чтобы он сверял с бд Если файл не существует в бд он удаляется с хостинга. а он удаляет все файлы с папки. Помогите поправить. Только учусь. - вопрос №5321428

// Параметры подключения к базе данных $servername = «localhost»; $username = «username»; $password = «password»; $dbname = «username»; $conn = new mysqli($servername, $username, $password, $dbname); // Проверка подключения к базе данных if ($conn->connect_error) { die(«Ошибка подключения к базе данных: ». $conn->connect_error); } // Выполнение запроса к базе данных для получения списка всех файлов $sql = «SELECT img_images FROM img_ads»; $result = $conn->query($sql); // Получение списка файлов в папке $imagesFolder = «media/images/»; $files = glob($imagesFolder. "*.webp"); // Проход по каждому файлу в папке foreach ($files as $file) { // Проверка, существует ли файл в базе данных $filename = basename($file); $fileInDb = false; if ($result->num_rows > 0) { while ($row = $result->fetch_assoc()) { if ($row['ads_images'] == $filename) { $fileInDb = true; break; } } } // Удаление файла с хостинга, если он не существует в базе данных if (!$fileInDb) { if (unlink($file)) { echo «Файл удален: ». $file. "
"; // Запись результатов в файл log.txt file_put_contents(«log/log.txt», «Удален файл: ». $file. PHP_EOL, FILE_APPEND); } else { echo «Не удалось удалить файл: ». $file. "
"; // Запись результатов в файл log.txt file_put_contents(«log/log.txt», «Не удалось удалить файл: ». $file. PHP_EOL, FILE_APPEND); } } // Сброс указателя результатов запроса перед новой итерацией $result->data_seek(0); } // Закрытие подключения к базе данных $conn->close();

ноябрь 12, 2023 г.

  • Всего ответов: 1

  • Arturk16 - аватарка

    Arturk16

    5-й в Технологиях

    // Параметры подключения к базе данных
    $servername = «localhost»;
    $username = «username»;
    $password = «password»;
    $dbname = «username»;

    $conn = new mysqli($servername, $username, $password, $dbname);

    // Проверка подключения к базе данных
    if ($conn->connect_error) {
    die(«Ошибка подключения к базе данных: ». $conn->connect_error);
    }

    // Выполнение запроса к базе данных для получения списка всех файлов
    $sql = «SELECT img_images FROM img_ads»;
    $result = $conn->query($sql);

    // Получение списка файлов в папке
    $imagesFolder = «media/images/»;
    $files = glob($imagesFolder. "*.webp");

    // Проход по каждому файлу в папке
    foreach ($files as $file) {
    // Проверка, существует ли файл в базе данных
    $filename = basename($file);
    $fileInDb = false;

    if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
    if ($row['img_images'] == $filename) {
    $fileInDb = true;
    break;
    }
    }
    }

    // Удаление файла с хостинга, если он не существует в базе данных
    if (!$fileInDb) {
    if (unlink($file)) {
    echo «Файл удален: ». $file. "\n";
    // Запись результатов в файл log.txt
    file_put_contents(«log/log.txt», «Удален файл: ». $file. PHP_EOL, FILE_APPEND);
    } else {
    echo «Не удалось удалить файл: ». $file. "\n";
    // Запись результатов в файл log.txt
    file_put_contents(«log/log.txt», «Не удалось удалить файл: ». $file. PHP_EOL, FILE_APPEND);
    }
    }

    // Сброс указателя результатов запроса перед новой итерацией
    $result->data_seek(0);
    }

    // Закрытие подключения к базе данных
    $conn->close();

    ноябрь 12, 2023 г.