Удалить файл из папки и MySQL присоединился к таблице

0

У меня есть система загрузки файлов, где я могу удалить из базы данных MySQL и из папки. Единственная проблема заключается в том, что все файлы в папке удаляются, а не только один. Каждая папка представляет собой пользовательскую папку с именем пользователя.

У меня есть объединенная таблица, где идентификатор двух таблиц равен. Мне нужно, чтобы связанное сообщение получило имя человека, чтобы узнать местоположение файла.

Это мой рабочий код до тех пор, когда несколько файлов удаляются вместо того, который я выбрал:

$analyse = mysqli_query($conn, "SELECT *
                                FROM analyse
                                INNER JOIN persons ON 
                                analyse.id_person = persons.id");

while ($row = mysqli_fetch_array($analyse)) {
    $img = $row['img_name'];
    $name= $row['name'];
    $frontname= $row['frontname'];
    $image_url = "../persons/{$name} {$frontname}/analyse/{$img}";
    $result = mysqli_query($conn, "DELETE FROM analyse WHERE id=$id");
    unlink($image_url);
    if($result){
        header('Location: ' . $_SERVER['HTTP_REFERER']);
    } else {
        echo "Failed to delete";
    }
}

Например: Person X с идентификатором 15 имеет три изображения с разными идентификаторами, но каждый раз с идентификатором (15) человека. Я хочу, чтобы удалить один выбранный файл вместо всех файлов с идентификатором 15.

ОБНОВЛЕНИЕ Я нашел решение, ID, который пришел для удаления, всегда был первым в моей строке DB. Извлечение моего массива было неправильным, и, соответственно, мой идентификатор. Спасибо за ответы.

Теги:
inner-join

1 ответ

0
Лучший ответ

Попробуйте использовать Limit 1 с запросом delete.

$analyse = mysqli_query($conn, "SELECT *
                                FROM analyse
                                INNER JOIN persons ON analyse.id_person = persons.id");

while ($row = mysqli_fetch_array($analyse)) {
    $img = $row['img_name'];
    $name= $row['name'];
    $frontname= $row['frontname'];
    $image_url = "../persons/{$name} {$frontname}/analyse/{$img}";
    $result = mysqli_query($conn, "DELETE FROM analyse WHERE id=$id LIMIT 1");
    unlink($image_url);
    if($result){
        header('Location: ' . $_SERVER['HTTP_REFERER']);
    } else {
        echo "Failed to delete";
    }
}
  • 0
    и что если он захочет удалить второй файл вместо первого
  • 0
    Это не работает на самом деле.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню