看上去很美 之asp

时间:2022-09-14 17:05:31

看上去很美

论坛上有位MM发贴问了一个问题,真是惭愧,我一眼看上去就发现了一个比较明显的错误,估计可能是她的笔误.我刚回完贴不久,她用消息跟我联系了!错误依旧

原贴:

http://topic.csdn.net/u/20080609/13/ab9951e1-6195-4513-a619-b0e304af7c5a.html

先瞒着MM,没有征得人家的同意,转载人家的代码:)

<% 

set rst=server.createobject("ADODB.recordset") 

rst.open "select * from users where u_user='"& request.form("f_user") & "'",conn,1,1 

if rst.recordcount>0 then 

response.write "用户名:"&request("f_user")&"已存在,请击后退按钮返回上一页!" 

response.end 

rst.close 

set rst=nothing 

conn.close 

set conn=nothing 

else 

rst.open "users",conn,1,3 

rst.addnew 

rst("u_user")=request("f_user") 

rst("u_code")=request("f_code") 

rst.update 

rst.close 

set rst=nothing 

conn.clsoe 

set conn=nothing 

end if 

%>

我们一起来分析一下!

1.先用传过来的用户名查询是否存在!如果存在就提示,反之就注册.看上去很美

2.既然存在两个业务我们就一个一个看.

set rst=server.createobject("ADODB.recordset") 

rst.open "select * from users where u_user='"& request.form("f_user") & "'",conn,1,1 

' if rst.recordcount>0 then 

response.write "用户名:"&request("f_user")&"已存在,请击后退按钮返回上一页!" 

response.end 

rst.close 

set rst=nothing 

conn.close 

set conn=nothing 

现在假设它只执行一个业务,所以if哪行我注释掉了,没有问题我们就继续看一下业务

 

<% 

set rst=server.createobject("ADODB.recordset") 

rst.open "select * from users where u_user='"& request.form("f_user") & "'",conn,1,1 

'if rst.recordcount>0 then 

if 1 <> 1 then

response.write "用户名:"&request("f_user")&"已存在,请击后退按钮返回上一页!" 

response.end 

rst.close 

set rst=nothing 

conn.close 

set conn=nothing 

else 

rst.open "users",conn,1,3 

rst.addnew 

rst("u_user")=request("f_user") 

rst("u_code")=request("f_code") 

rst.update 

rst.close 

set rst=nothing 

conn.clsoe 

set conn=nothing 

end if 

%>

注释掉原来的if判断,我们用一个类似java的断言来短路代码,让执行流程跳到else块上执行.如果你看着还不是很清晰的话可以像上面哪样把它(if哪段代码)删掉,像这样:

<% 

set rst=server.createobject("ADODB.recordset") 

rst.open "select * from users where u_user='"& request.form("f_user") & "'",conn,1,1 



'此处是删除的部分占位



rst.open "users",conn,1,3 

rst.addnew 

rst("u_user")=request("f_user") 

rst("u_code")=request("f_code") 

rst.update 

rst.close 

set rst=nothing 

conn.clsoe 

set conn=nothing 

end if 

%>

现在,只要稍微写过点asp的人都能发现一个错误了:

rst.open "select * from users where u_user='"& request.form("f_user") & "'",conn,1,1 

rst.open "users",conn,1,3 

这两行执行完后(或执行不完时),会发生什么呢?