我一直试图这样做几个小时,我不能完全理解它。我有一个名为“requests”的表,其中包含“deletekey”和“deleted”列。 “deletekey”是一个随机唯一编号(数据类型文本),“删除”默认设置为0(数据类型布尔值),当用户输入deletekey时,它将“deleted”更改为1。 但我无法让它发挥作用。 这是我的代码,我不知道我做错了什么:
$key = $_GET["delkey"];
$link = mysqli_connect("localhost","username","password","dbname");
$query = 'UPDATE requests SET deleted = True WHERE deletekey = "$key"';
$result = $link->query($query);
答案 0 :(得分:1)
WHERE deletekey = '$key
'吗? deleted
字段永远不能等于$key
中的任何字段,因为删除的是一个简单的布尔值,而$ key可能是一个int / char / varchar类型的东西。
请注意,您很容易受到SQL injection attacks的攻击。在了解问题以及如何避免问题之前,请停止处理此类代码。
答案 1 :(得分:1)
这应该有所帮助,并且还将提供针对SQL注入的保护:
$link = mysqli_connect("localhost","username","password","dbname");
$key = $link->real_escape_string($_GET["delkey"]);
$query = sprintf("UPDATE requests SET deleted = 1 WHERE deletekey = '%s'", $key);
$result = $link->query($query);
答案 2 :(得分:0)
它的deletedkey =“$ key”对吗?并且未删除=“$ key”:
$key = $_GET["delkey"];
$link = mysqli_connect("localhost","username","password","dbname");
$query = 'UPDATE requests SET deleted = true WHERE deletedkey = "$key"';
$result = $link->query($query);
答案 3 :(得分:0)
试试这个?
$link = mysqli_connect("localhost","username","password","dbname");
$key = $link->real_escape_string($_GET["delkey"]);
$query = "UPDATE `requests` SET `deleted` = true WHERE `deletedkey` = $key";
$result = $link->query($query);
答案 4 :(得分:0)
查询是一个字符串。要将变量添加到字符串,您需要键入
$query = 'UPDATE requests SET deleted = True WHERE deleted = '".$key."';
不同之处在于如何将变量放入字符串中。你必须在php中这样做。
$query = "randomtext ". $randomvar ." ";
其中重要的一点是字符串中的". $var ."
。这类似于javas "+ var +"
答案 5 :(得分:0)
$query = 'UPDATE requests SET deleted = 1 WHERE deletekey = "$key"';