ASP中的怪问题折腾了我很久

Hunter 2007-07-04 09:16:09
网页提交后写数据库为何每次都写两次,我仔细查看了代码也没有什么问题。

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

代码如下
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
...全文
290 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hunter 2007-07-05
  • 打赏
  • 举报
回复
还是不行的
penglewen 2007-07-05
  • 打赏
  • 举报
回复
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.
Hunter 2007-07-05
  • 打赏
  • 举报
回复
确实是代码上的问题,是Login.asp里的javascript出现的问题,够折腾的。
<script language="JavaScript">
function mysubmit(){
if (myform.userid.value==""){
window.alert("错误:请输入您的[用户名]!");
myform.userid.focus();
return (false);
}
if (myform.userpwd.value==""){
window.alert("错误:请确认您的[密码]!");
myform.userpwd.focus();
return (false);
}
mysubmit();
}
</script>
就最后那个mysubmit();改成return(true);就可以了,就这个造成写了两次数据库。
ld2099 2007-07-05
  • 打赏
  • 举报
回复
如果偶尔会写2次,可能是Ado的问题,如果每次都是,那肯定是你代码问题了

1、看看member.asp这个页面中有没有增加积分的代码

2、
数据库是不是sql?如果是,看看是否有触发器
x1234521 2007-07-05
  • 打赏
  • 举报
回复
检查一个页里是不是有同名的控件,比如 按钮的名字一样,如果有,更正一下,应该可以解决,以前我遇到过,郁闷了很久。
Hunter 2007-07-04
  • 打赏
  • 举报
回复
朋友们帮忙看下哦,谢谢大家了
Hunter 2007-07-04
  • 打赏
  • 举报
回复
单独执行是正常的,

Call SubAddJifen(userID)就是这个的功能正常

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧