MySQL查询错误,查询无法正常工作

时间:2015-12-02 10:56:39

标签: mysql sql servlets

我试图在我的servlet控制器中运行一个查询,该查询将id与我的数据库中的名称相匹配。使用的查询是

String query="SELECT *FROM entry WHERE id ="+id2+"AND name="+sname;

但我不断收到错误消息

  

“在第1行'name = Mary Jane'附近使用正确的语法”

我非常确定我的查询是正确的,当我运行它并且它运行的AND名称部分。所以我不知道为什么它不会与AND名称部分一起使用,除非我的查询对于那一方是错误的。任何想法?

1 个答案:

答案 0 :(得分:0)

连接字符串是 SQL注入攻击的第一步!

如果你想要这条路径添加空格:

String query="SELECT * FROM entry WHERE id = "+id2+" AND name= "+sname;

如果需要,添加'引用字符串文字:

String query="SELECT * FROM entry WHERE id = "+id2+" AND name= '"+sname + "'";

修改

你真的应该使用PreparedStatement之类的:

String query="SELECT * FROM entry WHERE id = ? AND name = ?";
PreparedStatement ps = con.prepareStatement(query);

ps.setInt(1, id2);
ps.setString(2, sname);