代码之家  ›  专栏  ›  技术社区  ›  Marco Fregoso

在foreach循环中,取消链接似乎不起作用

  •  0
  • Marco Fregoso  · 技术社区  · 7 年前

    因此,我有以下代码,当我从数据库中删除一行时,我也会删除与之关联的文件,代码运行平稳,实际上我可以从数据库中删除行,但不知何故,我无法从服务器目录中删除文件,请注意,行“photo\u filename”包含一个名称,如“photo.png”等,也可以调用_ 目录 _从文件返回如下路径“ 。。。 \桌面\项目/过程”,我甚至没有收到任何警告,如果取消链接成功,我尝试回显一个字符串,如果没有成功,则回显另一个字符串,但奇怪的是,我没有得到任何输出,就好像循环没有运行一样,有人能告诉我这里缺少的东西的正确方向吗。谢谢

    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;
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Marco Fregoso    7 年前

    我刚刚意识到我的愚蠢错误,所以“属性”表被链接到“照片”表,所以当我开始交易并从表中删除属性时,与它相关的照片也会被自动删除,所以当我选择并循环通过照片表以获取没有的文件时,将其留在这里,以防有人遇到类似的情况,谢谢你们的回应。