日期:2014-05-17  浏览次数:21240 次

ASP中的怪问题折腾了我很久
网页提交后写数据库为何每次都写两次,我仔细查看了代码也没有什么问题。

情况如下,编写了一个会员积分功能,当用户登陆后,对应的登陆积分和登陆次数都相应增加,但我每次登陆后都双倍的增加了。也就是对应增加积分的功能块执行了两次。请朋友们分析一下原因。注:增加积分的功能我单独进行测试是正常的。在用户登陆后进行触发就会出问题

代码如下
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?如果是,看看是否有触发器