您的SQL语法(...)附近有错误;

时间:2018-04-02 07:10:07

标签: mysql syntax-error

我收到了此消息,但我找不到任何错误:

  

您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第1行的'where id ='null''附近使用正确的语法

我认为这段代码错了,但事实证明它不是。

ResultSet rs = stmt.executeQuery("select password" +
                                 "from userinfo where id = '" + id + "';"); 

这是错误文件的完整代码。

 private boolean checkLoginInfo(String id, String password) throws ServletException
 {
        Connection conn = null;
        Statement stmt = null;

        try
        {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(
                "jdbc:mysql://localhost:3306/webdb", "root", "1234");
            if (conn == null)
                throw new Exception("can't connect to database.<BR>");
            stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("select password" +
                                            " from userinfo where id = '" + id + "';"); 
                if (!rs.next()) 
                   return false;
                String correctPassword = rs.getString("password");
                if (password.equals(correctPassword))
                    return true;
                else
                    return false;
        }

1 个答案:

答案 0 :(得分:0)

来自的密码之间存在缺少空间

select password" + "from userinfo where id = '" + id + "';"

试试这个

"SELECT password FROM `userinfo` WHERE id = '"+id+"'"

您应进一步阅读:

  1. 转义SQL查询
  2. 身份验证/授权(为什么只选择密码?)
  3. 代码格式
  4. 编辑1: 错误消息告诉我们,您要将id设置为'null'(字符串,因为&#39;&#39;),而不是NULL。如果你的id期待一个整数,但是你提供一个字符串,它将会中断。