unlink не работает в цикле foreach

0

Поэтому у меня есть следующий фрагмент кода, так что, когда я удаляю строку из базы данных, я также удаляю связанные с ней файлы, код работает плавно, и я действительно могу удалить строки из базы данных, но каким-то образом я не могу чтобы удалить файлы из каталога сервера, обратите внимание, что строка "photo_filename" содержит имя типа "photo.png" или так, а также вызов _ DIR _ из файла возвращает путь, подобный этому " ...\Desktop\project/процедуры ", я даже не получаю никаких предупреждений, которые я пробовал повторять aa string, если unlink был успешным, а какая-то другая строка, если не была успешной, но странно, что я не получаю никакого вывода, это как если бы цикл не даже бежать, может кто-то указать мне в правильном направлении на то, что мне не хватает прямо здесь. Спасибо

try {
  $db->beginTransaction();    // Begin transaction
  $query = "DELETE FROM properties "
    . " WHERE property_id = :property_id";  // Delete requested property.
  $stmt = $db->prepare($query);
  $stmt->bindParam(":property_id", $property["property_id"], PDO::PARAM_INT);
  $stmt->execute();
  $query = "SELECT * FROM photos "
    . " WHERE property_id = :property_id";
  $stmt = $db->prepare($query);
  $stmt->bindParam(":property_id", $property["property_id"], PDO::PARAM_INT);
  $stmt->execute();
  foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $photo) {
    try {
      unlink(__DIR__ . "/../img/" . $photo["image_filename"])
    } catch (Exception $e) {
      throw $e;
    }
  }
  $query = "DELETE FROM photos "
    . " WHERE property_id = :property_id";
  $stmt = $db->prepare($query);
  $stmt->bindParam(":property_id", $property["property_id"], PDO::PARAM_INT);
  $stmt->execute();
  $db->commit();
} catch (Exception $e) {    // If there is a problem
  $db->rollBack();  //If there was a problem undo the whole attempt to insert
  $session->getFlashBag()->add("error", "Hubo un problema" . $e->getMessage()); // Display a message
  redirect("/show.php?id=".$property_id); // And redirect
  exit;
}
  • 4
    Хорошо, что ты пропустил; после разрыва связи.
  • 2
    Вы проверили, что у вас есть какие-либо данные, оставшиеся в таблице фотографий для этого конкретного property_id? Если вы запустили код без обнаруживаемой ошибки, вы удалите все записи в таблице фотографий для этого свойства.
Показать ещё 3 комментария
Теги:
pdo

1 ответ

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

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

Ещё вопросы

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