2013-02-07 56 views
-2

我正在使用腳本將用戶添加到PHP中的數據庫中。在添加任何幻想之前,我想要掌握基本知識。請注意我是PHP新手,我知道我不應該使用mysql_query,我應該使用PDO,但我想確保我有一些工作可以回退。使用MySQL將數據插入到我的數據庫中時出錯

我得到的錯誤是這樣的:你的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的'第6行

我的查詢如下正確的語法手冊:

$query = "INSERT INTO users(`username`,`password`,`email`,`regdate`,`isadmin`) VALUES(
`" . mysql_real_escape_string($data['fusername']) . "`, 
`" . md5(sha1($data['fpass'])) . "`, 
`" . mysql_real_escape_string($data['femail']) ."`, 
`NOW()`, 
`1`"; 

(對不起密碼散列,我要去稍後加入鹽)

我執行它是這樣:

$sql = mysql_query($query); 

if(!$sql) 
{ 
    die("Account was unsuccessfully created: " . mysql_error()); 
} 

我試着在$ sql中增加了模具(),但它似乎是回到空白。

我已經嘗試刪除反引號,用單引號替換它們,在用戶()函數中沒有反引號 - 它們都沒有工作。

任何想法?

+1

請發表您的錯誤。 –

+1

您只需使用反引號引用[標識符](http://dev.mysql.com/doc/refman/5.0/en/identifiers.html)。值用單引號(或雙引號)引用。此外,MySQL擴展已被棄用。您應該使用PDO或MySQLi代替 – Phil

回答

0

它應該是這樣的。希望它能幫助你。

$query = "INSERT INTO users(username,password,email,regdate,isadmin) VALUES(
'".mysql_real_escape_string($data['fusername'])."', 
'".md5(sha1($data['fpass']))."', 
'".mysql_real_escape_string($data['femail'])."', 
'NOW()', 
'1'"; 
+0

從技術上講,它應該**不會使用任何以'mysql_ *'開頭的內容。另外,你不會引用NOW(),並且你錯過了一個關閉''' – Phil

+0

我已經發布了這個,但是StackOverflow似乎錯了我的評論。 我不知道是否有可能將多個答案標記爲最好,所以我會發布什麼修復它在這裏。 1)我刪除反引號,並用單引號替換它們。 2)我刪除了NOW()附近的引號。 3)我添加了一個缺失的結束括號。 – Seabody

0

不需要在值中包含塊引號。每當出現錯誤時,請檢查您的查詢兩次或三次。你可以試試這個,

$query = "INSERT INTO users(`username`,`password`,`email`,`regdate`,`isadmin`) 
    VALUES('". mysql_real_escape_string($data['fusername']) . "', '" . md5(sha1($data['fpass'])) . "', '" . mysql_real_escape_string($data['femail']) ."', NOW(), '1')"; 

注意:mysql_real_escape_string是不推薦使用的函數。 http://php.net/manual/en/function.mysql-real-escape-string.php

相關問題