上门女婿王子铮和柳萱:大鸟们帮我看看这小段代码~

来源:百度文库 编辑:神马品牌网 时间:2024/05/09 10:58:22
其中的if检测语句没有用.怎么回事?

set rs=server.CreateObject("adodb.recordset")
rs.Open "select * from musiclist",conn,2,3
dim a(3),b(3),c(3),r,s
for r=0 to 3
a(r)=trim(request.form("songname"&r))
b(r)=trim(request.form("singer"&r))
c(r)=trim(request.form("special"&r))
next
for s=0 to 3
if a(s)="" or b(s)="" or c(s)="" then
response.write"<script LANGUAGE='javascript'>alert('必须全部填写~!');history.go(-1)';</script>"
end if
rs.addnew
rs("songname")=a(s)
rs("singer")=b(s)
rs("special")=c(s)
rs("adddate")=now()
rs.update
next
rs.close
set rs=nothing
我这样写IF还是没起到作用!为什么??

set rs=server.CreateObject("adodb.recordset")
rs.Open "select * from musiclist",conn,2,3
dim a(3),b(3),c(3),r,s
for r=0 to 3
a(r)=trim(request.form("songname"&r))
b(r)=trim(request.form("singer"&r))
c(r)=trim(request.form("special"&r))
if a(s)="" or b(s)="" or c(s)="" then
rs.close
set rs=nothing
response.write"<script LANGUAGE='javascript'>alert('必须全部填写~!');history.go(-1)';</script>"
end if
next
for s=0 to 3
rs.addnew
rs("songname")=a(s)
rs("singer")=b(s)
rs("special")=c(s)
rs("adddate")=now()
rs.update
next
rs.close
set rs=nothing

空值(Null)和空字符串""是有差别的
如果提交的是空,那么这里
trim(request.form("songname"&r))
的结果就是Null

如果你再判断Null是否跟""相等,那当然不相等啦

正确的做法是
trim(request.form("songname"&r) & " ")
加上一个空格(空串也行)之后再trim,这样trim完之后不是Null,是""

明白了没?

你看我多好人··

为什么要这么做,判断应该在给数组赋值的时候就做了,如果照你现在这么做,如果a(0),b(0),c(0)符合条件,那么这条记录就已经入库了,接下去的a(1),b(1),c(1)万一不符合条件,那么用户就要再重新提交一次表单,那是不是刚才的a(0)又要再重新入库一次?

在打开数据库之前就先判断接受表单传来数据的合法性,完全合法了再进行数据库操作,这样也比较节省资源.如果按你这样的,每判断到一次数据不合法,就会留下一个未关闭的数据库链接,多浪费啊

去trim不然你的数组中是不会有空值的