0

小さなログイン構造を作成しました:

フィールドにデータを書き込んだ場合は、アカウントを確認するためのリンクを受け取ります。例 confirm.php?email=a@a.com リンクにアクセスすると、次のコードが実行されます。

$sql = mysqli_connect("localhost", "name", "password");
mysqli_select_db($sql, "db");
$set_active = "UPDATE `users` SET `active` = 1 WHERE `email` = ".$_GET['email']."";
mysqli_query($sql, $set_active);
mysqli_close($sql);

しかしその後、アクティブ値はデフォルトのように 0 のままです。

users テーブル: email (varchar 100) active (int 1) a@a.com 0

4

3 に答える 3

2

準備済みステートメントを使用します。

$stmt = mysqli_prepare($sql, "UPDATE `users` SET `active` = 1 WHERE `email` = ?") or die(mysqli_error($sql));
mysqli_bind_param($stmt, "s", $_GET['email']);
mysqli_stmt_execute($stmt) or die(mysqli_error($sql));
于 2013-10-25T19:52:42.173 に答える
1
$set_active = "UPDATE `users` SET `active` = 1 WHERE `email` = '".$_GET['email']."'";

'あなたはメールを逃しました。したがって、クエリは間違っています。それを確認するには:

echo("UPDATE `users` SET `active` = 1 WHERE `email` = ".$_GET['email']."");

これにより、エラーが発生します。

于 2013-10-25T19:51:05.350 に答える
0

物事は二重引用符で評価されますが、単一引用符では評価されません

変化する

set_active = "UPDATE `users` SET `active` = 1 WHERE `email` = ".$_GET['email']."";

set_active = "UPDATE `users` SET `active` = 1 WHERE `email` = '".$_GET['email']."'";
于 2013-10-25T19:59:24.580 に答える