如何取消链接php

问题描述:

中的图像我上传图像到服务器并将路径保存在数据库中。现在我想删除记录,并在图像与记录 我的代码是如何取消链接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'");

当我回声$图像[“形象”];这会给我

http://www.example.com/folder/images/image_name.jpeg
记录被成功删除,但图像保留在服务器上。

+2

更换拆下取消链接调用'@'看到任何错误是否拿出 – 2011-04-19 08:56:51

+1

'警告:取消链接():HTTP不允许断开链接在/ var /第11行的www/test/delete_table.php' – 2011-04-19 08:59:08

+0

是否正确?如果它不是'jpg',或者您可以尝试使用路径而不是网址 – 2011-04-19 08:59:49

您必须使用服务器上的路径删除图像,而不是网址。

unlink('/var/www/test/folder/images/image_name.jpeg'); // correct 

你应该删除@unlink()之前,在这种情况下,你会看到错误消息说“找不到文件”或类似的东西。

+0

,但图像路径来自数据库,就像我在我的问题中提到的那样。所以我应该如何知道哪些图像被删除。 – 2011-04-19 09:01:11

+0

从PHP 5.0.0开始,unlink()也可以与一些URL包装一起使用。 http://www.php.net/manual/en/wrappers.php – 2011-04-19 09:01:36

+0

也许你应该保存图像的路径。另一种方式(我不会这样做)是'str_replace('http://www.example.com','/var/www/test',$url);'在取消路径之前取消路径 - 但你应该尽量避免这种情况 - 只需保存文件路径即可。 – oezi 2011-04-19 09:03:52

您应该使用相对路径从服务器中删除文件并取消链接。如果保存数据库中的绝对路径,首先必须从删除图像的文件夹中看到。所以,如果你从“delete.php”,也就是在www.example.com/folder/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";} 
    } 

,只要你选择删除链接的代码。 像这样:<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; 
            } 
          } 

简单,如果你使用folder/images/image_name.jpeg代替整个网址中断开链接它会正常工作 例如
取消链接(“http://www.example.com/folder/images/image_name.jpeg”);

unlink("folder/images/image_name.jpeg"); 
+0

不错:)一个作品! – habamedia 2016-01-25 21:33:51

//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