0

我试图使用这个 url 从数据库中删除一些东西:

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

怎么了?

4

3 回答 3

2

mail_id在 URL 中使用,但id在 PHP 代码中使用。在两个地方都使用相同的,它会起作用的。

但是,这非常重要,您编写的代码存在一个巨大的安全问题,称为 SQL 注入。mysql_*函数已被弃用,因此请学习如何使用mysqli_*和/或PDO取而代之,并将准备好的语句与它们一起使用,这样您受到 SQL 注入攻击的可能性就会大大降低。

于 2012-10-15T03:31:31.473 回答
2

你得到动作了吗?您应该获取邮件 ID,而不是获取 ID。

$_GET['action']  
$_GET['mail_id']
于 2012-10-15T03:29:53.397 回答
0

在您的查询字符串中,您将变量名称传递为,mail_id但在检索时您只使用id. 您必须使用mail_id并且您没有检索action变量值。您应该使用$_GET['action'] == delete而不是 this $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(); 
    }
}
于 2012-10-15T03:38:35.600 回答