请帮我看看这段ASP查询语句,为什么只能查第一个数据呢?

2025-12-17 20:58:34
推荐回答(2个)
回答1:

<%
Server.scriptTimeout="10"
set conn=Server.CreateObject("ADODB.connection")
connstr="DBQ="&server.mappath("psd.mdb")&";DRIVER={Microsoft Access Driver (*.mdb)};"
conn.open connstr

username=request.form("username") '此处最好过滤一下
password=request.Form("password")

Set RST=Server.CreateObject("ADODB.RecordSet")
StrSQL="Select * from psd where username='" & username & "'"
RST.Open StrSQL,conn,1,1 '得到搜索后的记录

while not rst.eof

if password=rst("password") then
response.cookies("adminok")=true
response.redirect "index.html"
else
response.redirect "error.html"
end if

rst.movenext

wend

rst.close
set rst=nothing
conn.close
%>

回答2:

首先思路错了
应该是Sql="Select * From Member Where UserName='"&username&"' And UserPWD='"&password&"'"

这样才可能将游标放置到你要指定的位置,否则要么是游标在最上要么在最下。
而且通过我给你讲的这种方式,程序代码可以节约很多。

根据你的方式其实也可以,不过异常麻烦,当数据量大的时候你就没办法了。
举例如下:
Sql="Select * From Member Order By ID Asc"
Set Rs=Conn.Execte(Sql)
构建循环 条件是Not Rs.Eof Or Not Rs.Bof
然后将每次从数据库从提取的指定字段数值和你的Request过来的进行比较。如果结果符合就跳出循环,否则继续。你想如果有几十万的数据量,那比较一个周期系统是不是要瘫痪了?

结束循环