Mysql 您的SQL语法(…)附近有错误;
我收到此消息,但找不到任何错误: 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“where id='null''附近要使用的正确语法 我以为这个代码是错的,但事实证明不是Mysql 您的SQL语法(…)附近有错误;,mysql,syntax-error,Mysql,Syntax Error,我收到此消息,但找不到任何错误: 您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“where id='null''附近要使用的正确语法 我以为这个代码是错的,但事实证明不是 ResultSet rs = stmt.executeQuery("select password" + "from userinfo where id = '" + id + "';"); 这是错误文件的完整代码 privat
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;
}
private boolean checkLoginInfo(字符串id、字符串密码)抛出ServletException
{
连接conn=null;
语句stmt=null;
尝试
{
Class.forName(“com.mysql.jdbc.Driver”);
conn=DriverManager.getConnection(
“jdbc:mysql://localhost:3306/webdb“,”根“,”1234”);
如果(conn==null)
抛出新异常(“无法连接到数据库。
”;
stmt=conn.createStatement();
ResultSet rs=stmt.executeQuery(“选择密码”+
“来自userinfo,其中id=”“+id+”;”;
如果(!rs.next())
返回false;
字符串correctPassword=rs.getString(“密码”);
if(密码等于(正确密码))
返回true;
其他的
返回false;
}
密码和发件人之间缺少一个空格:
试试这个:
"SELECT password FROM `userinfo` WHERE id = '"+id+"'"
您应该此外阅读以下内容:
错误消息告诉我们,您正在将
id
设置为'null'
(字符串,因为“”),而不是NULL
。如果您的id
需要一个整数,但您提供了一个字符串,它将中断。在调用checkloginInfo方法之前是否检查了该id是否为NULL。NULL
是有效密码吗?您可能应该在将输入发送到数据库之前验证它们(关于:SQL注入攻击)“from”之前是否有空格?完整代码中有空格,但摘录中没有。此外,您似乎在数据库中以明文形式存储密码。这是一个非常非常糟糕的主意。@VickyS是的,我有。谢谢您的评论。谢谢您的回答。我更改了查询,但仍然不起作用。@lee1707什么类型(例如Integer)字段id
?是否允许NULL
?最新的错误消息是什么?您正在将值设置为'NULL'
,这是一个字符串。如果您的字段需要整数或NULL
,这可能是错误。抱歉,这是我的错误。我忘记重新编译java。您是对的,非常感谢。(Id类型为字符串,不允许为空)@lee1707很乐意帮助。如果我的答案对您有帮助,请将其标记为正确答案。谢谢。:-)
"SELECT password FROM `userinfo` WHERE id = '"+id+"'"