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

Asp classic ASP Classic-数据类型不匹配错误,asp-classic,Asp Classic,我正试图从MS Access数据库中创建一个ID(主键和自动增量),用作登录通行证。但我收到了这个错误: ODBC驱动程序的Microsoft OLE DB提供程序错误“80040e07” 条件表达式中的[Microsoft][ODBC Microsoft Access驱动程序]数据类型不匹配 这是我的代码: con.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ="& Server.MapPath("db.mdb") &"

我正试图从MS Access数据库中创建一个ID(主键和自动增量),用作登录通行证。但我收到了这个错误:

ODBC驱动程序的Microsoft OLE DB提供程序错误“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
如果我遗漏了一些东西或您推荐的任何解决方案,请纠正我

提前感谢。

更改:

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
检查三件事:

  • 确保上一页中的表单是通过POST方法提交的,而不是GET
  • 删除id周围的单引号,因为它不是字符串(如果id列是整数)(@meda-answer)
  • 如果不是rs.eof,则使用
    而不是
    如果不是rs.bof
  • 除了你的问题,还有一个安全警告:


    在重定向到管理页面之前,毫无疑问,您需要一些逻辑来设置会话或cookie,以确定真正的管理是否要转到目标页面。似乎你们的管理页面并没有逻辑来检查用户是来自登录页面还是突然出现在那个里

    它看起来像是以字符串形式发送ID。应该是int吗?如果是这样的话,把撇号放下,它就在周围。哦,谢谢。我已删除引号,并收到以下错误:[Microsoft][ODBC驱动程序管理器]驱动程序的SQLSetConnectAttr失败。有什么解决方案吗?我能看看你的sql=代码行吗
    sql=“SELECT*fromtblogin,其中ID=”&request.form(ID)&“;”
    像这样尝试一下,看看会发生什么。。。sql=“从tblLogin中选择*,其中ID=“&request.form(“ID”)
    If rs.EOF then
       response.redirect "loginpage.asp?msg=ID does not exist."
    else
       response.redirect "adminpage.asp"
    end if