2013-07-24 194 views
0

我試圖插入用戶輸入的值以及一個字符串,該字符串是開始日期的月份年份+用戶輸入的季度的組合。哪裏不對。請幫忙!!!!!MySql語法錯誤,插入

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "addUser")) { 
$date= $_POST['start_date']; 
$d=date_parse_from_format("Y-m-d",$date); 
    $insertSQL = sprintf("INSERT INTO contacts (USER_NAME, START_DATE, THREE_MONTH, SIX_MONTH, TWELVE_MONTH, QUARTER, ORDER) VALUES (%s, %s, %s, %s, %s, %s,'".$d["month"].$d["year"].$_POST['quarter']."')", 
         GetSQLValueString($_POST['user'], "text"), 
         GetSQLValueString($_POST['start_date'], "date"), 
         GetSQLValueString($_POST['3month'], "date"), 
         GetSQLValueString($_POST['6month'], "date"), 
         GetSQLValueString($_POST['12month'], "date"), 
         GetSQLValueString($_POST['quarter'], "text")); 

錯誤我越來越:

您的SQL語法錯誤;檢查手冊, 對應於您的MySQL服務器版本的正確語法使用 附近'ORDER)VALUES('boobz','2013-11-22','2013-11-29', '2013-11- 23' ,‘2013-11-02’,'在行1個

+9

ORDER是SQL中的保留字。如果你真的必須使用它,你需要用反引號引用它;但如果您避免在保留字之後命名列和表,那麼這會讓您更容易。 – andrewsi

+0

你能告訴我們,你在$ insertSQL變量中有什麼嗎? – FSou1

+0

@andrewsi爲什麼不回答? –

回答

2

順序是保留字。使用`或更好的將其更改爲其他數據庫結構的東西,這是更好的做法。

2

順序是A保留字,您需要用反引號引用:

INSERT INTO contacts (USER_NAME, START_DATE, THREE_MONTH, SIX_MONTH, TWELVE_MONTH, QUARTER, `ORDER`) 

或更好的是,不要使用保留字並使用更明智的東西。