2017-05-15 41 views
0

我想在UPDATE的一個入口在MySQL中,表的結構是table_rankings (ip text, field text, rank double)。其中ip是用戶的IP地址,field是排名對象,rank是字段的數字排名。我的說法是:Java MySQL UPDATE錯誤使用WHERE與AND

//String for query 
String query = "UPDATE "+catagory+"_rankings SET rank = ? WHERE ip = ? AND field = ?)"; 
PreparedStatement ps = conn.prepareStatement(query); 
//fill ? variables 
ps.setDouble(1, r[i]); 
ps.setString(2, user); 
ps.setString(3, s[i]); 

ps.executeUpdate(); 

在這段代碼catagory是指給定表,例如baseball_rankingsbasketball_rankings。我收到的錯誤是:

SQLException: 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 ')' at line 1 
SQLState: 42000 
VendorError: 1064 

的是,我不能在UPDATE語句中使用WHERE以及AND這個問題?我也很好奇,如果我的更新受到SQL注入攻擊,因爲我正在使用catagory+"_rankings"。我試圖使用一個?變量,但它會導致另一個錯誤。

+1

你只有一個右括號 –

+0

@TimBiegeleisen我不認爲他能做到。 –

+0

@DawoodibnKareem爲什麼不(我很好奇)? –

回答

2

你添加一個額外的「)」,或者可以說,你錯過了「(」。

嘗試

String query = "UPDATE "+catagory+"_rankings SET rank = ? WHERE ip = ? AND field = ? "; 
+0

這真令人氣憤,我一直在看這個代碼幾個小時。 –