2013-10-25 95 views
0

我創建了一個小的登錄strucuture:與更新MySQL的數據GET變量

如果你在寫數據到字段您收到一個鏈接,確認該帳戶。 例如[email protected] 當您訪問下面的代碼執行的鏈接:

$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喜歡deafult。

的用戶表: 電子郵件(VARCHAR 100)有效(INT 1) [email protected] 0

+1

Prefable:用一備聲明佔位符。否則,您需要在該值附近加引號,並且還應該使用'mysqli_real_escape_string'來防止SQL注入。 – Barmar

+1

用戶mysqli_error()你會發現確切的錯誤 – Manwal

+1

你的電子郵件變量沒有引號。嘗試將它改爲''「。$ _GET ['email']。」'';'此外,您應該使用MySqli或PDO的準備語句。 – Kyle

回答

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

你已經錯過了在電子郵件'。所以查詢是錯誤的。檢查一下:

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

這會給你一個錯誤。

3

使用事先準備好的聲明:

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

+1爲參數化查詢 – Houssni

0

事情就在雙引號評價,但不是單一的

變化

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

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