2012-01-17 36 views
0

我檢查登記時的字段更多的字段:PHP - 用戶登記到數據庫比需要

if($username&&$email&&$password&&$repeatpassword) { } 

我有大約10場,所以我註冊查詢如下所示:

$queryreg = mysql_query("INSERT INTO users VALUES(
    '','$username','','$password','$email','','','','','','' 
)"); 

die ("You have been registered."); 

當我嘗試註冊時,它告訴我我已經成功註冊,但不會將用戶添加到數據庫中。數據庫名稱和密碼是正確的。

+1

嘗試在'die'之前添加'echo mysql_error();' – Vyktor 2012-01-17 21:19:00

+1

並學習正確的錯誤處理和SQL(例如,指定具有值的列名稱)。 :) – ThiefMaster 2012-01-17 21:20:18

+0

如果此代碼旨在生產中運行,請不要。閱讀SQL注入攻擊片刻,你一定會明白爲什麼。 – Dan 2012-01-18 00:07:39

回答

4

你的SQL查詢看起來我錯了,應該是更象:

INSERT INTO `users` (ID, Username, Password, Email) VALUES ('$id', '$username', '$password', '$email') 

首先colomns,那麼值:)

+1

只要您爲表中的每個列提供值,那麼列列表就不必要了。但仍建議儘量避免每次添加列時都修改代碼... – netcoder 2012-01-17 21:25:21

+3

如果列順序因某些原因而更改(這在開發過程中容易發生),這也將有所幫助。 – 2012-01-17 21:26:16

+1

值不應該直接插入到語句中。相反,他們應該準備好語句參數。 – outis 2012-01-17 21:30:38

0

這更像是一個數據庫設計問題的聲音。正確的表格設計應該有註冊期間不需要的列,標記爲,可以爲空,以便SQL中不需要任何內容​​。在這種情況下,你的插入看起來更像這樣:

INSERT INTO users VALUES('','$username','','$password','$email') 

但是,這仍然不是最好的情況。最好的情況會更多的東西像下面這樣:

INSERT INTO users (Username, Password, Email) VALUES('$username','$password','$email') 

這將指定要插入到特定的列,並避免你在的地方空列的不必要的額外報價。

相關問題