2015-09-10 146 views
0

我收到錯誤「查詢錯誤!」與此代碼:MYSQL插入更新 - 重複密鑰更新 - 獲取錯誤

$result = $connection->query("INSERT INTO EMP_TBLE (NAME, AGE, CATEGORY, UPDATE_COUNT) VALUES('$NAME', '$AGE', $CAT, 1 
ON DUPLICATE KEY UPDATE UPDATE_COUNT = UPDATE_COUNT + 1")); 
echo "<br>".$result;die; 

我也檢查不同的例子,像這個例子運行成功,但我發現上述代碼爲我的演示項目的錯誤。

+0

你從哪裏得到'$ NAME'和'$ AGE'等等?如果這些來自用戶輸入,請注意SQL注入。你應該在這裏使用參數綁定。 – halfer

+0

起初,您應該使用帶反引號的名稱''''''' – M0rtiis

+0

打印您的查詢並將其發佈到問題中。看看你在運行什麼。很可能,你會發現自己的錯誤。 – user4035

回答

1

VALUES的右大括號缺失。代碼行末尾還有一個不需要的大括號。

請更改

$result = $connection->query("INSERT INTO EMP_TBLE (NAME, AGE, CATEGORY, UPDATE_COUNT) VALUES('$NAME', '$AGE', $CAT, 1 ON DUPLICATE KEY UPDATE UPDATE_COUNT = UPDATE_COUNT + 1")); 

$result = $connection->query("INSERT INTO EMP_TBLE (NAME, AGE, CATEGORY, UPDATE_COUNT) VALUES('$NAME', '$AGE', $CAT, 1) ON DUPLICATE KEY UPDATE UPDATE_COUNT = UPDATE_COUNT + 1"); 
0

顯然,你沒有關閉parentesis在正確的地方:

$result = $connection->query("INSERT INTO EMP_TBLE (NAME, AGE, CATEGORY, 
UPDATE_COUNT) VALUES('$NAME', '$AGE', $CAT, 1) 
ON DUPLICATE KEY UPDATE UPDATE_COUNT = UPDATE_COUNT + 1"); 

而且......你至少應該逃避所有在像這樣的查詢中連接之前的變量以避免SQL注入