我正在尝试在MySQL中UPDATE
一个条目,表的结构table_rankings (ip text, field text, rank double)
。其中ip
是用户的 IP 地址,field
是要排名的对象,rank
是字段的数字排名。我的发言是:
//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_rankings
或basketball_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
我不能使用的问题是否WHERE
AND
UPDATE
语句中?我也很好奇我的更新是否受到SQL注入攻击,因为我使用的是catagory+"_rankings"
。我尝试使用?
变量,但它会导致另一个错误。
你加了一个额外的"(",或者可以说,你错过了一个"("。
尝试
String query = "UPDATE "+catagory+"_rankings SET rank = ? WHERE ip = ? AND field = ? ";