удалить изображение из строки, срок действия которой истек

Эй, у меня есть php-код, который проверяет, срок действия строк которого истек, и удаляет их, один из столбцов - это имя изображения, которое было загружено на сервер через ftp, когда я удаляю все записи с истекшим сроком действия, я также хочу удалить прикрепленные изображения им. Я читал о команде unlink на php, но не понимаю, как я могу применить ее ко всем изображениям сразу.

У меня есть этот код, который я только что набрал, например, потому что я действительно не знаю, как это сделать.

     $sql = "DELETE FROM table WHERE date < NOW()";
 mysqli_query($conn,$sql);

$file = "public_html/images/".//Here should go the image name;
unlink($file);
if($sql)
{
    echo "Records were deleted";
}
?>

Может ли кто-нибудь сказать мне, как я могу удалить все изображения, прикрепленные к удаленным строкам?


person user7415791    schedule 01.02.2017    source источник
comment
Вы должны привыкнуть принимать ответы, которые помогут вам решить ваши проблемы. Вы будете зарабатывать очки, а другим будет предложено помочь вам.   -  person Jay Blanchard    schedule 01.02.2017
comment
@JayBlanchard Вы правы, я начну это делать :)   -  person user7415791    schedule 01.02.2017
comment
Вам нужно будет выбрать все строки where date < NOW(), затем получить имя файла из каждой строки, затем разъединить файл и затем УДАЛИТЬ строку из базы данных. Но вы должны знать, что мы не можем даже написать это для вас без дополнительной информации о столбцах в вашей таблице.   -  person RiggsFolly    schedule 02.02.2017
comment
@RiggsFolly У меня есть столбцы идентификатора, имени, даты, описания, изображения в моей таблице, у каждого продукта есть дата истечения срока действия, которая после того, как он больше не актуален, поэтому его необходимо удалить, столбец изображения содержит имя изображения, например изображение .png, и я загружаю его в приложение, добавляя URL-адрес, например: www.website.com/images/image.png, поэтому, когда я удаляю элемент, который больше не нужен, я хочу удалить прикрепленное к нему изображение. также. проблема в том, что я не знаю, как удалить, если будет много элементов для удаления. надеюсь, что это поможет.   -  person user7415791    schedule 02.02.2017


Ответы (1)


ЕСЛИ вы хотите удалить строки из таблицы в своей базе данных и в то же время удалить изображения из папки на сервере, где вы их храните, вам придется обрабатывать каждого кандидата на удаление по одному, чтобы вы могли получить имя файла из строки, чтобы выполнить удаление файла одновременно с удалением строки.

// connect to database

$base_path = 'public_html/images/';
$del_count = 0;

// SELECT all the delete candidates
$sql = "SELECT id,image FROM table WHERE date < NOW()";
$sel4del = mysqli_query($conn,$sql);
if ( ! $sel4del ) {
    echo $sel4del->error;
    exit;
}

// prepare a delete by id
$sql = 'DELETE FROM table WHERE id = ?';
$delrow = mysqli_prepare($conn,$sql);
if ( ! $delrow ) {
    echo $delrow->error;
    exit;
}

// Process all the delete candidates one by one
while ($row = $sel4del->fetch_object() ) {
    // remove the file from disk
    unlink($base_path . $row->image);
    $del_count++;

    // bind the current id to the prepared delete query
    $delrow->bind_param('i', $row->id);    

    // execute the delete of this one row
    $delrow->execute();
}
echo 'images removed = ' . $del_count
?>
person RiggsFolly    schedule 02.02.2017