如何从文件夹和数据库中删除图像

Posted

技术标签:

【中文标题】如何从文件夹和数据库中删除图像【英文标题】:How to delete image form folder and database 【发布时间】:2019-03-10 19:24:30 【问题描述】:

我正在使用下面的代码在表中显示来自 mysql 数据库的数据

<td><?php echo $row['name']; ?></td>
			<td><?php echo $row['image']; ?></td>
			<a title="Delete" href="deletestudent.php?id=<?php echo $row['id']; ?>"><button class="btn btn-danger btn-mini"> Delete</button></a></td>
第一行显示图像的名称,第二行显示位于名为 images 的目录中的图像。

我可以使用以下代码删除行

<?php
	include('../connect.php');
	$id=$_GET['id'];
	$result = $db->prepare("DELETE FROM student WHERE id= :memid");
	$result->bindParam(':memid', $id);
	$result->execute();
	
	header ("location: students.php");
?>
但是我怎样才能从图像文件夹中删除图像。

提前致谢。

【问题讨论】:

你只是问如何在 PHP 中删除文件?当您在 Google 上搜索“在 PHP 中删除文件”时,您发现了什么?您是否尝试从找到的示例中应用知识?什么不起作用? 我发现取消链接会起作用,但我无法合并两个代码,当单击时同时删除图像和数据...我知道应该在删除行之前删除图像...但是我不知道如何在这里申请取消链接....!! delete image from folder PHP的可能重复 【参考方案1】:

在从数据库中删除图像之前,您应该先删除图像,然后如果成功从数据库中删除图像。

您可以使用 php 的取消链接功能删除图像。在此之前确保文件存在:

<?php
    include('../connect.php');
    $id=$_GET['id'];

       // you must first retrieve data from database to get the image path that 
       //you have been saved in db

   $stmt = $dbh->prepare("SELECT * FROM mytable WHERE id= :memid LIMIT 1"); 
   $stmt->bindParam(':memid', $id);
   $stmt->execute(); 

   $record = $stmt->fetch();

  //get image path
  $imageUrl = $_DIR_.'/images/uploads/profile/'.$record['Image_name'];

  //check if image exists
  if(file_exists($imageUrl))

    //delete the image
    unlink($imageUrl);

    //after deleting image you can delete the record
    $result = $db->prepare("DELETE FROM student WHERE id= :memid");
    $result->bindParam(':memid', $id);
    $result->execute();
    
    header ("location: students.php");
?>

【讨论】:

我在名为 images 的文件夹中有图像 ..我应该在上面的代码中指定路径吗?我相信 'example/url' 必须替换为我传递 onclick 事件的值,即图像名称......但是我应该声明的路径在哪里? @redface 您保存在数据库中以显示图像的路径 在图像列下的数据库中,我只有像 1.png 或 2.jpg 这样的图像名称,但图像保存在另一个名为 images 的文件夹中。 @redface 文件夹位置在哪里?从您当前的文件中解决它 @Chipster :是的,因为一旦您删除了记录,如果图像删除出现问题,这样您就不会丢失图像路径。如果先删除记录再删除图像,如果文件删除过程出错,则无法找到图像路径【参考方案2】:

您可以使用unlink() 函数从目录中删除图像。

如果您的图像是脚本的同一目录并且文件名在变量$id 中,您可以使用unlink($id) 将其删除。

如果您的图像在另一个目录中,您可以使用

$fileid = 'path/'.$id
unlink($fileid)

这里的path/ 是存储图像的目录的位置。

【讨论】:

【参考方案3】:

您可以使用以下方法从文件系统中删除图像:

unlink('path/to/file.jpg');

【讨论】:

我从数据库中检索带有字段“名称”的值。我该如何应用或者我应该与上面一起编写什么代码来应用您的解决方案。 请阅读相对和绝对路径名。 en.wikipedia.org/wiki/Path_(computing)。您缺少一些基本知识来解决您的问题。

以上是关于如何从文件夹和数据库中删除图像的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Firebase 存储中删除 Vue.js 组件图像?

Firebase:如何获取不匹配图像的差异并从存储中删除图像

如何从 url 中删除端口以使 xampp 数据库中的图像源正常工作?

如何从图像文件夹中删除图像?

在 Laravel 8 中更新图像后如何从公共文件夹中删除图像

如何在ios中删除照片的图像?