繁体   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