我将图像上传到服务器并将路径保存在数据库中。现在我想删除该记录以及该记录的图像 我的代码是
$id=$_GET['id']; $select=mysql_query("select image from table_name where question_id='$id'"); $image=mysql_fetch_array($select); @unlink($image['image']); $result=mysql_query("delete from table_name where question_id='$id'");
当我回显$ image ['image'];这会给我
http://www.example.com/folder/images/image_name.jpeg记录已成功删除,但图像仍保留在服务器上。
答案 0 :(得分:42)
您必须使用服务器上的路径删除图片,而不是网址。
unlink('/var/www/test/folder/images/image_name.jpeg'); // correct
你应该在@
之前移除unlink()
,在这种情况下你会看到错误消息“找不到文件”或类似的东西。
答案 1 :(得分:4)
如果您在取消链接中使用folder/images/image_name.jpeg
代替整个网址,那么就可以了
例如
取消关联( “http://www.example.com/folder/images/image_name.jpeg”);
应替换为
unlink("folder/images/image_name.jpeg");
答案 2 :(得分:1)
您应该使用相对路径从服务器删除文件并取消链接。如果在数据库中保存绝对路径,首先必须查看删除图像的文件夹。因此,如果您从www.example.com/folder/delete.php中删除“delete.php”中的图像,则应该执行以下操作:
$db_path = "http://www.example.com/folder/images/upArrow.png";
$len = strlen("http://www.example.com/folder/");
$new_path = substr($db_path, $len, strlen($db_path)-$len); echo " -> ".$new_path;
if(isset($_POST['Submit'])){
$return = unlink($new_path);
if($return){echo "Succes";}else{echo "Fail";}
}
答案 3 :(得分:1)
每当您在删除链接中选择代码时。
像:<a href=addproduct.php?action=delete&pid=$get_info[pid]>Delete</a>
那么你必须使用cuurent选择项来检查条件。
if(isset($_GET['action']) && $_GET['action']=='delete' && isset($_GET['pid']))
{
$query1=("select * from tablename where id='".$_GET['id']."'");
$result1=mysql_query($query1);
while($data=mysql_fetch_array($result1))
{
$delete=$data['file'];
unlink("../upload/$delete");
}
$query=("delete from tablename where id='".$_GET['id']."'");
$result=mysql_query($query) or die("not inserted". mysql_error());
if($result==TRUE)
{
$_SESSION['msg']="product successfully deleted";
header("Location:addproduct.php");
exit;
}
else
{
$_SESSION['msg']="error in deleting product";
header("Location:addproduct.php");
exit;
}
}
答案 4 :(得分:0)
//http://www.example.com/folder/images/image_name.jpeg
define("BASE_URL", DIRECTORY_SEPARATOR . "folder" . DIRECTORY_SEPARATOR);
define("ROOT_PATH", $_SERVER['DOCUMENT_ROOT'] . BASE_URL);
$folder_upload = "images/";
$image_delete = ROOT_PATH . $folder_upload . pathinfo($image['image'], PATHINFO_BASENAME);
if (!empty($image['image'])) {
/* Delete */
if (unlink($image_delete)) {
echo "<b>{$image_delete}</b> has been deleted";
} else {
echo "<b>{$image_delete}</b> error deleting ";
}
} else {
echo "File image not exist";
}
// http://localhost/folder/images/image_name.jpeg