0

私はこれを何時間もやろうとしてきましたが、頭がよくわかりません。「deletekey」列と「deleted」列を持つ「requests」というテーブルがあります。「deletekey」はランダムな一意の番号 (データ型のテキスト) であり、「deleted」はデフォルトで 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);
4

6 に答える 6

1

じゃないWHERE deletekey = '$keyの?deleted は単純なブール値であり、 $key はおそらく int/char/varchar 型のものであるため、フィールドdeletedは にあるものと決して等しくなりません。$key

SQL インジェクション攻撃に対して脆弱であることに注意してください。問題とそれを回避する方法を理解するまで、この種のコードの作業を中止してください。

于 2013-10-16T20:34:45.883 に答える
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);
于 2013-10-16T20:35:59.717 に答える
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);
于 2013-10-16T20:34:13.333 に答える
0
$query = 'UPDATE requests SET deleted = 1 WHERE deletekey = "$key"';
于 2013-10-16T20:41:25.490 に答える
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);
于 2013-10-16T20:36:59.027 に答える
0

クエリは文字列です。そして、変数を文字列に追加するには、入力する必要があります

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

違いは、変数を文字列に入れる方法です。phpでこのようにする必要があります。 $query = "randomtext ". $randomvar ." "; 重要なポイントは". $var ."文字列の内側です。これはjavasに似ています"+ var +"

于 2013-10-16T20:40:41.180 に答える