TMD代码,无论IF什么它都执行then下面的语句

来源:百度知道 编辑:UC知道 时间:2024/07/02 17:10:08
<!--#include file="conn.asp"-->
<% names=trim(request("names"))
password=trim(request("password"))
qq= "Select * From [group] where names='"&names&"' and password='"&password&"'"
set rg=conn.execute(qq)
if rg.bof and rg.eof then
response.write("<script Language='javascript'>alert('您输入不正确的姓名和密码,或者您不是代理人。返回请按确定。');history.go(-1);</script>")
else
session("names")=rg("names")
Response.Redirect "daili2.asp"
end if
rg.close
set rg=nothing %>
我在前一页输入正确的、错误的名称和密码。无论if里面我改成not rg.eof, not (rg.bof and eof), 等等
它都是执行then下面的语句。如果then跟else的语句调换,都是会跳到daili2.asp,而且session("names")是空的。
有ASP高手接触过这个问题吗?望指教。
我用response对qq 进行显示,SQL语法可以输出,没有错
我用过response.write qq : response.end(),传出值正确,数据库里面有多个相关的记录,无论我输入正确的还是错误的密码,结果都是一样,都是then

在这句set rg=conn.execute(qq)之前加一句:
set rg.CursorLocation=adUseClient

然后在你的If条件后用:
if rg,recordcount=0 then

用这个试试,应该没问题的.

if rg.bof and rg.eof then
'就是没有找到相应的记录而现实出的提示
else
'就是查询到符合条件的记录而出现的提示
end if

错误可能性:
1、names和password没有得到正确的返回值,可以在set rg=conn.execute(qq) 前输出 response.write qq : response.end()来看看传入的值是否正确。
2、就是你的数据库里就没有符合条件的记录。

set rg=conn.execute(qq)
不这样用
Set rg = Server.CreateObject("Adodb.RecordSet")
rg.open qq,conn,1,1
然后再if

是不是你的数据库搞错了?
有一次我就是这样,把Access文件搞错了。页面连接的那个Access文件里面没有这个用户。
另外,你把输出的qq在Access里运行一下看看(新建一个查询,用SQL视图),有没有这样的结果

怪事哟..加个括号试试
if (gg.eof and gg.bof) then

rg 是 null 可能出现这种情况,可以用 rg is nothing 来检查
请检查 conn.execute(qq) 是否正常执行并得到结果