簡體   English   中英

當同一行中的值等於變量時,如何更新某列?

[英]How do I update a certain column when a value from the same row equals a variable?

我一直試圖這樣做幾個小時,我不能完全理解它。 我有一個名為“requests”的表,其中包含“deletekey”和“deleted”列。 “deletekey”是一個隨機唯一編號(數據類型文本),默認情況下“刪除”設置為0(數據類型布爾值),當用戶輸入deletekey時,它將“已刪除”更改為1.但是我無法讓它發揮作用。 這是我的代碼,我不知道我做錯了什么:

$key = $_GET["delkey"];
$link = mysqli_connect("localhost","username","password","dbname");
$query = 'UPDATE requests SET deleted = True WHERE deletekey = "$key"';
$result = $link->query($query);

不應該是WHERE deletekey = '$key ',那么? deleted字段永遠不會等於$key任何內容,因為deleted是一個簡單的布爾值,而$ key可能是一個int / char / varchar類型的東西。

請注意,您很容易受到SQL注入攻擊 在了解問題以及如何避免問題之前,請停止處理此類代碼。

這應該有所幫助,並且還將提供針對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);

它的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);

嘗試這個?

 $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);

查詢是一個字符串。 並將變量添加到您需要鍵入的字符串

$query = 'UPDATE requests SET deleted = True WHERE deleted = '".$key."';

區別在於如何將變量放入字符串中。 你必須在php中這樣做。 $query = "randomtext ". $randomvar ." "; 其中重點是". $var ." 在字符串里面。 這個我類似於javas "+ var +"

$query = 'UPDATE requests SET deleted = 1 WHERE deletekey = "$key"';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM