通过url查询从mysql中删除。错误“查询为空”

时间:2012-10-15 03:27:06

标签: php mysql

我试图使用此网址从数据库中删除某些内容:

siteurl.com/mail.php?action=delete&mail_id=10

使用此代码:

if ($action == delete) { 
    if(isset($_GET['id'])) { 
        $deleteid = $_GET['id'];
        $sql = "DELETE FROM mail WHERE mail_id = ".$deleteid." LIMIT 1";
        $query = mysql_query($sql);      
        header('Location: '.$_SERVER['HTTP_REFERER'].' ');
        exit(); 
    }
}

但它不起作用,显示错误:Query was empty

怎么了?

3 个答案:

答案 0 :(得分:2)

你有没有采取行动?您应该获取邮件ID,而不是获取ID。

$_GET['action']  
$_GET['mail_id']

答案 1 :(得分:2)

您在网址中使用mail_id,但在PHP代码中使用id。在两个地方使用相同的一个,它将起作用。

然而,这非常重要,您编写的代码存在一个巨大的安全问题,称为SQL注入。不推荐使用mysql_*个函数,因此请学习如何使用mysqli_*和/或PDO,并使用预先准备好的语句,这样您就不太可能受到SQL注入攻击。

答案 2 :(得分:0)

在您的查询字符串中,您将变量名称传递为mail_id,但在检索时您只使用id。您必须使用mail_id并且还没有检索action变量值。您应该使用$_GET['action'] == delete代替此$action == delete。所以最后你的代码应该是这样的

if ($_GET['action'] == delete) { 
    if(isset($_GET['mail_id'])) { 
        $deleteid = $_GET['mail_id'];
        $sql = "DELETE FROM mail WHERE mail_id = ".$deleteid." LIMIT 1";
        $query = mysql_query($sql);      
        header('Location: '.$_SERVER['HTTP_REFERER'].' ');
        exit(); 
    }
}