ASP Classic - 数据类型不匹配错误

时间:2014-03-02 20:21:53

标签: asp-classic

我正在尝试从MS Access数据库中创建一个ID(主键和自动增量)以用作登录传递。但是我收到了这个错误:

  

Microsoft OLE DB Provider for ODBC Drivers错误'80040e07'

     

[Microsoft] [ODBC Microsoft Access驱动程序]条件表达式中的数据类型不匹配。

这是我的代码:

con.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("db.mdb") &""
sql="SELECT * FROM tblLogin WHERE ID='" & request.form("id") & "';"

rs.CursorType=2

rs.Open sql,con

if rs.bof then
   response.redirect "loginpage.asp?msg=ID does not exist."
else
   response.redirect "adminpage.asp"
end if

如果我遗漏某些内容或您推荐的任何解决方案,请纠正我。

提前致谢。

2 个答案:

答案 0 :(得分:5)

变化:

sql="SELECT * FROM tblLogin WHERE ID='" & request.form("id") & "';"

sql="SELECT * FROM tblLogin WHERE ID=" & request.form("id")

然后像这样检查:

If rs.EOF then
   response.redirect "loginpage.asp?msg=ID does not exist."
else
   response.redirect "adminpage.asp"
end if

答案 1 :(得分:0)

检查3件事:

  1. 确保上一页中的表单是通过POST方法而不是GET提交的。
  2. 删除ID周围的单引号,因为它不是字符串(如果ID列为整数)(@ meda答案)
  3. 使用if not rs.eof代替if not rs.bof

还有一个安全警告,除了您的问题:

在重定向到管理页面之前,毫无疑问,您需要一些逻辑来设置会话或cookie,以确定真正的管理者是否要转到目标页面。看来您的管理页面没有逻辑可以检查用户是从登录页面进入还是突然进入登录页面!