求教高手下 ASP的问题

来源:百度知道 编辑:UC知道 时间:2024/07/03 00:26:34
dim ssql,res
ssql="SELECT * FROM [login] WHERE [name]='"&username&"' and [password]='"&password1&"'"
Set res=conn.Execute(ssql)
if res.EOF then
Response.Redirect"error.asp"
else
Response.Redirect"welcome.asp"
end if
conn.close
这个为啥总是true呢
我想弄个登录的验证 &username&这个是上个页面表单传过来的
<%username= Trim(Request.Form("name")%>
这样 不管输入数据库里有没有的数据 都是去error.asp的页面
求教高手解答

判断数据库是否为空,要判断BOF和EOF属性是否同时为空,你只是判断游标是否位于最后一条记录之后就认定是没有记录,这样在判断不严谨
但你这儿的用法并不一定报错,如果游标类型"只读向前"从开始读取到EOF为真时,可以判断数据库为空,如果非"只读向前"类型游标,那么当我调用MOVEFIRST方法时,你仍按上述方法判断是不是就不准确了呢?
假设数据内有数据,先将游标置于最后一条记录上,rs.movelast
再调用rs.movenext
此时,EOF为真,但它却是包含数据的,即:数据不为空,而EOF属性为真
是不是不准确呢?
if rs.bof and rs.eof then
'没有记录
end if
这样完整一些吧,

第一:<%username= Trim(Request.Form("name")%>
这样获取值,必须你的表单是POST方式提交。
第二:ssql="SELECT * FROM [login] WHERE [name]='"&username&"' and [password]='"&password1&"'"
你这样写的话,就必须用户名和密码都相同时才不会进入ERROR.ASP页面。
第三:你数据库中是否存在这样的用户名和密码?
第四:你数据库中的密码是否是已经加密的?因为你发的这些代码看不出来是不是加密后的字符验证。

确认数据传递正确后再把
if res.EOF then
改成
if res.BOF=false then

说明 没查询出来数据。看看你数据库中有记录吗
输出username和password1 看看他们是否的到了数据

你把SQL语句输出看看,username和password1是否有值。
如果有,就看看,你表中有没有完全符合的用户。