我试图使用此网址从数据库中删除某些内容:
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
怎么了?
答案 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();
}
}