2010-02-28 56 views
1

我一直在尋找遍佈互聯網的解決方案,以解決以下錯誤;MySQL語法錯誤; 「檢查對應於你的MySQL服務器版本的手冊..」

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'primary, username, password, password2) VALUES (null, 'hello', 'hello', 'hello')' at line 1" 

我不知道是怎麼回事。我知道你會問我的代碼所以這裏什麼:

$con = mysql_connect("localhost","root","*****"); 
    if (!$con) 
     { 
     die('Server overload, please try again' . mysql_error()); 
     } 

    mysql_select_db("users", $con); 

    $sql = "INSERT INTO details (primary, username, password, password2) VALUES (null, '$_POST[username]', '$_POST[password]', '$_POST[password2]')"; 

    if (!mysql_query($sql,$con)) 
     { 
     die('Error: Server overload, try again' . mysql_error()); 
     } 
    echo "You have signed up successfully!"; 

    mysql_close($con); 

我一直在試圖弄明白周邊的4/5現在幾個小時,並沒有成功。
謝謝,
勞倫斯

+0

我剛剛搜索「您的SQL語法錯誤;請檢查手冊」。也許你只是在搜索整個錯誤?前幾個結果是正確的答案。 – Stephano 2010-02-28 19:48:58

回答

6

primaryreserved keyword,在SQL中,這意味着你應該:

  • 重命名該列 - 將是一個好主意,以避免這種od情況
  • 或使用反引號角落找尋那名

這裏查詢會是什麼樣子在第二種情況:

INSERT INTO details (`primary`, `username`, `password`, `password2`) 
VALUES (null, 'hello', 'hello', 'hello') 


注意:你應該逃脫你的價值觀,用mysql_real_escape_string,以避免SQL Injections

+0

謝謝:)我認爲這將是一個簡單的錯誤!分類全部。 – Lawrence 2010-02-28 20:01:48

+0

不客氣:-) ;;並且不要忘記*「逃脫你的價值」*部分! – 2010-02-28 20:02:45

2

儘量不要使用主要和細節等相對常見的名稱命名錶或列。

儘管它們可能不是您正在使用的SQL的保留字,但您永遠不知道什麼時候可以支持其他類型(Postgres,Oracle等)。

您也可以使用這個方便,花花公子reserved word checker

的後續問題:
我想知道是誰寫你所得到的錯誤說法,基本上RTM說?熱鬧。我將在下次嘗試中使用它。 :)

相關問題