2013-03-28 78 views
1

我從MySQL收到此錯誤信息:MySQL錯誤:您在您的SQL語法錯誤

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 'key,time) 
VALUES ('FreeTest','86400')' at line 2 

下面是代碼:

if ((isset($_POST['key'])) && (isset($_POST['days']))) { 

    $key = mysql_escape_string($_POST['key']); 
    $days = mysql_escape_string($_POST['days'] * 86400); 

    $add = "INSERT INTO licence 
    (key,time) 
    VALUES 
    ('$key','$days')"; 

    $addkey = mysql_query($add); 
} 
+0

不能使用MySQL的關鍵字'key'作爲一個MySQL表裸列名。你可以用背部抽搐(又名Grave口音)逃脫它們,但這非常俗氣。請不要使用這些字詞:https://dev.mysql.com/doc/refman/4.1/en/reserved-words.html –

回答

6

命名KEY之列,這是一個列名稱恰好是保留關鍵字,您需要使用反引號進行轉義,以免出現語法錯誤,TIME也是保留的keyowrd,但mysql允許在不反引號的情況下使用它。

INSERT INTO licence (`key`,time) VALUES ('$key','$days') 

作爲旁註,查詢是用SQL Injection脆弱,如果變量的值(小號)從外部來了。請看下面的文章,瞭解如何防止它。通過使用PreparedStatements你可以擺脫使用單引號圍繞值。

相關問題