如何在PHP中取消链接图像

时间:2011-04-19 08:55:19

标签: php

我将图像上传到服务器并将路径保存在数据库中。现在我想删除该记录以及该记录的图像 我的代码是

$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
记录已成功删除,但图像仍保留在服务器上。

5 个答案:

答案 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