当同一行中的值等于变量时,如何更新某列?

时间:2013-10-16 20:31:53

标签: php mysql

我一直试图这样做几个小时,我不能完全理解它。我有一个名为“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);

6 个答案:

答案 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"';