2009-12-17 106 views
0

我正在嘗試在我的網站上創建密碼檢索系統,並且在更新數據庫中的密碼重置字段時遇到問題。我嘗試了一切,但似乎沒有任何工作。使用PHP更新SQL數據庫

這是我到目前爲止的代碼:

$passwordreset = md5(mt_rand()) . md5(mt_rand()) . md5(mt_rand()); 

$con = mysql_connect("localhost","XXX","XXX"); 
if (!$con) { 
    die('Could not connect: ' . mysql_error()); 
} 

mysql_select_db("database", $con); 

mysql_query("UPDATE members SET passwordreset = $passwordreset WHERE id = $id"); 

當我嘗試插入數據出現錯誤:

Error: Query was empty 

任何幫助,將不勝感激,謝謝 。

+0

確定此消息來自這個特定的查詢?你如何得到錯誤? – 2009-12-17 12:51:39

回答

2

不知道這是唯一的問題,但我猜你passwordreset場數據庫中的一個字符串 - 用於存儲多個md5的串接,它們必須是字符串。

所以,應該有以防萬一你把這個字段的值引號,在SQL查詢:

mysql_query("UPDATE members SET passwordreset = '$passwordreset' WHERE id = $id"); 


而且,在一般情況下,你應該mysql_real_escape_string逃脫你的字符串值:

mysql_query("UPDATE members SET passwordreset = '" 
    . mysql_real_escape_string($passwordreset) 
    . "' WHERE id = $id"); 

它不會改變任何東西,因爲有一個MD5無報價...但它是一個很好的做法,始終做到這一點,永遠不會發現自己在一個情況下,有必要和你沒」不要這樣做。

+0

感謝您的回覆,仍然無法正常工作,得到同樣的錯誤 – Crazyd22 2009-12-17 12:12:15

0

$passwordreset之後的兩條線是故意的嗎?你可以嘗試刪除它們嗎?

+0

他們不應該是一個問題。我有很多很長的MySQL語句,換行符和php/MySQL都沒有問題。 – flokra 2009-12-17 12:46:30

0

我不知道,如果你得到了這個空查詢錯誤,但你需要蜱周圍的值:

mysql_query("UPDATE members SET passwordreset = '$passwordreset' WHERE id = '$id'"); 
0

我想周圍的列名反引號丟失,嘗試:

mysql_query("UPDATE members SET `passwordreset` = '$passwordreset' WHERE `id` = '$id'");