网页提交后写数据库为何每次都写两次,我仔细查看了代码也没有什么问题。
情况如下,编写了一个会员积分功能,当用户登陆后,对应的登陆积分和登陆次数都相应增加,但我每次登陆后都双倍的增加了。也就是对应增加积分的功能块执行了两次。请朋友们分析一下原因。注:增加积分的功能我单独进行测试是正常的。在用户登陆后进行触发就会出问题
代码如下
Sub SubAddJifen(userID)
'=================================================
'过程名:SubAddJifen
'作 用:更新登陆积分计数,用户每登陆一次,加100分
'
'=================================================
'sql2= "update integral set loginIntegral=loginIntegral+100,loginCounts=loginCounts+1 where userID= ' "&userID& " ' "
'conn.execute(sql2)
strSql= "select * from integral where userID= ' "&userID& " ' "
Set RsJf=Server.CreateObject( "ADODB.RecordSet ")
RsJf.open strSql,conn,1,3
if not RsJf.eof then
RsJf( "loginCounts ")=RsJf( "loginCounts ")+1
RsJf( "loginIntegral ")=RsJf( "loginIntegral ")+100
RsJf.update
response.Write( "Integral loginCounts: "&RsJf( "loginCounts ")& " <br> ")
response.Write( "Integral loginIntegral: "&RsJf( "loginIntegral ")& " <br> ")
end if
RsJf.close
Set RsJf=nothing
End Sub
登陆执行代码如下:
userID=trim(request( "userID "))
userPwd=trim(request( "userPwd "))
sql= "select ID,userID,userPwd,UserName,Email,Phone from users where userID= ' "&userID& " ' and userPwd= ' "&userPwd& " ' "
'set rs=conn.execute(sql)
set rs=server.createObject( "adodb.recordSet ")
rs.open sql,conn,1,1
If rs.eof then
response.redirect "noPurview.asp "
Else
session( "login ")=true
rs.close
set rs=nothing
Call SubAddJifen(userID)
conn.close
set conn=nothing
response.redirect "member.asp "
end if
------解决方案--------------------
Else
session( "login ")=true
rs.close
set rs=nothing
'Call SubAddJifen(userID)
sql2= "update integral set loginIntegral=loginIntegral+100,loginCounts=loginCounts+1 where userID= ' "&userID& " ' "
conn.execute(sql2)
看看,不用调用sub.
------解决方案--------------------
检查一个页里是不是有同名的控件,比如 按钮的名字一样,如果有,更正一下,应该可以解决,以前我遇到过,郁闷了很久。
------解决方案--------------------
如果偶尔会写2次,可能是Ado的问题,如果每次都是,那肯定是你代码问题了
1、看看member.asp这个页面中有没有增加积分的代码
2、
数据库是不是sql?如果是,看看是否有触发器