当我尝试使用以下代码登录时,它会给我一个错误说
Microsoft JET数据库引擎错误“80040e10”。
没有给出一个或多个必需参数的值。
/ghbet/login2.asp,第11行
LOGIN1.ASP:
<html>
<head>
</head>
<body>
<table align=center>
<tr>
<td align=center>
<b> LOGIN </b>
<br>
<br>
<br>
<form action=login2.asp method=post>
UserName <input type=text name=uname /> <br>
Password <input type=password name=password /> <br><br>
<p align=right> <input type=submit value=LOGIN name=submit /> </p>
</td>
</tr>
</table>
</form>
</body>
</html>
LOGIN2.ASP:
<%
dim name, pass
name=Request.form("uname")
pass=Request.form("password")
set conn=server.CreateObject("ADODB.connection")
conn.ConnectionString="provider=Microsoft.jet.OLEDB.4.0;data source=C:\Inetpub\wwwroot\ghbet\ghbet.mdb"
conn.Open
set rs=Server.CreateObject("ADODB.recordset")
query="select * from ghbet_users where username='" & name & "'and password='" & pass & "'"
rs.Open query,conn
if not rs.EOF then
Response.Write " <h4> LOGIN SUCCESSFUL </h4>"
else
response.Write "<h4> USER NAME & PASSWORD NOT MATCHING </h4>"
end if
%>vb
请帮助
答案 0 :(得分:4)
确定获得一个或多个必需参数的值的确定方法。&#34;错误是要求不存在的字段(名称)s。因此,请检查ghbet_users是否确实包含用户名和密码字段。
正如Cheran所指出的那样,保留字可能会导致问题。由于没有人能够知道在下一版DBMS中将保留哪些单词,请在[]中包含所有名称。
您应该认真考虑使用参数查询来避免SQL攻击和数据类型/引用问题。
您的If子句接受登录尝试,如果&#34;不是rs.EOF&#34; - 即如果查询返回一个或更多记录;你应该测试一个包含预期值的记录。
答案 1 :(得分:2)
PASSWORD
是一个保留的Jet SQL关键字(请参阅List of Microsoft Jet 4.0 reserved words)。尝试在查询中使用方括号[]
围绕列名:
query="select * from ghbet_users where username='" & name& "'and [password]='" & pass & "'"
答案 2 :(得分:0)
看起来您分配给查询的字符串是此错误消息的根。确保在字符串中连接的变量之间提供空格。
我要做的第一件事是确保参数包含值,确保在发布表单时,它传递“name”和“password”的值。