从路径和数据库中删除图像

时间:2014-12-24 04:28:20

标签: php mysql

我收到以下错误:

  

警告:unlink()[function.unlink]:无效的参数       C:\ XAMPP \ htdocs中\ SH \业主\ delete_img.php       在第11行

  

您的SQL语法有错误;检查对应的手册       到你的MySQL服务器版本,以便在附近使用正确的语法       '*来自img_homestay WHERE imgid ='“73”''在第1行

这是我删除图片的代码。我的图像有自己的imgid。我想用他们的imgid删除它。

<?php

// This is a sample code in case you wish to check the username from a mysql db table
$link=mysql_connect("localhost", "root","")or die("could not connect");
$db=mysql_select_db("sh",$link) or die ("could not select database");

    $imgid = $_GET['imgid'];
    // sending query
    $select=mysql_query("SELECT location FROM img_homestay WHERE imgid='$imgid'");
    $img=mysql_fetch_array($select);
    unlink($img['location']);
    $result=mysql_query("DELETE * FROM img_homestay WHERE imgid='$imgid'")
    or die(mysql_error());      

    header("Location: editimage1.php");
?>

这是我要删除的图片之一的链接:

/SH/owner../data/img1.jpg

3 个答案:

答案 0 :(得分:1)

来自评论。它已被编辑。

您的查询应为DELETE FROM。从查询中删除*

完整查询:DELETE FROM img_homestay WHERE imgid='$imgid'

此外,您可以从查询中删除$result =部分,也可以执行此操作。

if($result) {
    //Successfully deleted image.
}

此外,您的代码非常容易受到SQL注入。您将原始用户输入传递到SQL查询中。至少,您应该逃避引用,但强烈建议您还使用MYSQLI或PDO函数集进行数据库连接和查询。

您可能还需要检查您尝试从中删除文件的文件夹的权限。理想情况下,容纳图像的文件夹应设置为chmod 755

http://mattbango.com/notebook/code/prepared-statements-in-php-and-mysqli/

此链接是对准备好的陈述的非常基本的介绍,也提供了进一步阅读的链接。

编辑:完整代码段。

<?php

// This is a sample code in case you wish to check the username from a mysql db table
$link=mysql_connect("localhost", "root","")or die("could not connect");
$db=mysql_select_db("sh",$link) or die ("could not select database");
$imgid = $_GET['imgid'];
$imgid = mysql_real_escape_string($imgid);

$path= $_SERVER['DOCUMENT_ROOT'].'/owner../data/';
// sending query
$select=mysql_query("SELECT location FROM img_homestay WHERE imgid='$imgid'");
$img=mysql_fetch_array($select);
unlink($path.$img['location']);
$result=mysql_query("DELETE FROM img_homestay WHERE imgid='$imgid'") or die(mysql_error()); 

//Check to see if the query can run
if($result) {
    header("Location: editimage1.php");
} else {
    //Query failed. Display an error message here.
}

&GT;

答案 1 :(得分:0)

<?php

// This is a sample code in case you wish to check the username from a mysql db table
$link=mysql_connect("localhost", "root","")or die("could not connect");
$db=mysql_select_db("sh",$link) or die ("could not select database");

    $imgid = $_GET['imgid'];
    $path= $_SERVER['DOCUMENT_ROOT'].'/owner../data/';
    // sending query
    $select=mysql_query("SELECT location FROM img_homestay WHERE imgid='$imgid'");
    $img=mysql_fetch_array($select);
    unlink($path.$img['location']);
    $result=mysql_query("DELETE FROM img_homestay WHERE imgid='$imgid'") or die(mysql_error());     

    header("Location: editimage1.php");
?>

答案 2 :(得分:0)

这种类型的错误基本上需要调试。 首先检查问题是否与unlink()函数或Sql连接相关。 创建另一个php文件,检查它是否适用于静态路径

<?php
$path='/SH/owner../data/img1.jpg'; // update it as per your filepath..path should be from root
if(unlink($path)) 
{
echo "Deleted file ";
}
else
{
 echo "Not Able to Delete File";
}
?>

让我们看看它的改造。

作为部分由9997撰写关于数据库连接和查询执行的部分似乎完全正常。