簡體   English   中英

取消鏈接似乎在foreach循環中不起作用

[英]unlink doesn't seem to work in a foreach loop

因此,我有以下一段代碼,以便當我從數據庫中刪除行時,我也刪除了與之關聯的文件,代碼運行流暢,實際上我能夠從數據庫中刪除行,但是以某種方式我無法要從服務器目錄中刪除文件,請注意,“ photo_filename”行包含諸如“ photo.png”之類的名稱,也從文件中調用_ DIR _會返回這樣的路徑“ ... \\ Desktop \\ project /程序”,我什至沒有收到任何警告,如果取消鏈接成功,我嘗試回顯一個字符串,如果不成功,則返回其他字符串,但是奇怪的是我沒有得到任何輸出,就像循環沒有甚至可以跑步,有人能為我指出我在這里缺少的東西的正確方向。 謝謝

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;
}

我剛剛意識到自己的愚蠢錯誤,因此將“屬性”表鏈接到“照片”表,因此當我開始交易並從表中刪除該屬性時,與之關聯的照片也會自動刪除,因此當我選擇並循環瀏覽照片表以獲取沒有的文件,將其保留在此處,以防有人碰到類似的東西,謝謝大家的回應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM