为什么sql语句执行一次确重复插入了两条记录,ACCESS数据库???

hj3793 2005-05-26 08:30:13
<!-- #include file="cnOpen.asp" -->
<%
Dim rs,iNum
iNum=0
Set rs=Server.CreateObject("Adodb.RecordSet")
If Trim(Request("Name"))<>"" Then
rName=Trim(Request("Name"))
Email=Trim(Request("Email"))
Contact=Trim(Request("Contact"))
HomePage=Trim(Request("HomePage"))
rface=Trim(Request("face"))
Title=Trim(Request("Title"))
Content=Trim(Request("Content"))
rName=Replace(rName,"'","''")
Email=Replace(Email,"'","''")
Contact=Replace(Contact,"'","''")
HomePage=Replace(HomePage,"'","''")
Title=Replace(Title,"'","''")
Content=Replace(Content,"'","''")
Content=Replace(Content,vbcrlf,"<br>    ")
'Response.Write(Title&"<br>")
'Response.Write(Content)
'Response.End()

Sql="Insert into board(b_Name,b_face,b_Email,b_Contact,b_HomePage,b_Title,b_Content,b_Time) values"_
&"('"&rName&"','"&rface&"','"&Email&"','"&Contact&"','"&HomePage&"','"&Title&"','"&Content&"','"&Now()&"')"

'Response.Write(Sql)
if iNum=0 Then
cn.Execute(Sql)
End if
iNum=iNum+1

rs.Open "Select id from board where b_Name='"&Trim(rName)&"'",cn,1,3
'Response.Write(rs.RecordCount)
'response.End()
if rs.RecordCount=2 then
Id1=trim(rs("id"))
rs.MoveNext
Id2=Trim(rs("id"))
if Id2=Id1+1 then
cn.execute "delete from board where id="&id2
end if
end if
rs.Close
'rs.Open "Select * from board order by id desc",cn,2,3
'rs.addnew
' rs("b_Name")=rName
' rs("b_Face")=rFace
' rs("b_Email")=rEmail
' rs("b_Contact")=rContact
' rs("b_HomePage")=rHomePage
' rs("b_Title")=rTitle
' rs("b_Content")=rContent
' rs("b_Time")=Now()
'rs.update
'rs.close
Response.Write "<script language=javascript>alert('您的留言已经提交');</script>"
Response.Cookies("Post")="Yes"
ElseIf Request.Cookies("Post")<>"" then
Response.Write "<script language=javascript>alert('您已经留过言了.');</script>"
End If
%>
...全文
555 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
patann 2005-05-26
  • 打赏
  • 举报
回复
我今天也遇到这种情况,但我找到原因了,情况跟 hellofox2000(圣代无隐者,英雄尽归来) 说的一样,多用了一次“form.submit()”
hellofox2000 2005-05-26
  • 打赏
  • 举报
回复
很可能是这样的问题,在提交页面
<script>
function check(){
if (someCon){
alert("不能为空");
return false;
}
form1.submit(); ------------->一次提交
}
</script>

<form action="" onsubmit="return check();">
<input type="text" value="">
<input type="submit"> ------------->两次提交
</form>
hj3793 2005-05-26
  • 打赏
  • 举报
回复
自己再顶~~~高手睡觉去了???
hj3793 2005-05-26
  • 打赏
  • 举报
回复
<!-- #include file="cnOpen.asp" -->
<%
Dim rs,iNum
iNum=0
Set rs=Server.CreateObject("Adodb.RecordSet")
If Trim(Request("Name"))<>"" Then
rName=Trim(Request("Name"))
Email=Trim(Request("Email"))
Contact=Trim(Request("Contact"))
HomePage=Trim(Request("HomePage"))
rface=Trim(Request("face"))
Title=Trim(Request("Title"))
Content=Trim(Request("Content"))
rName=Replace(rName,"'","''")
Email=Replace(Email,"'","''")
Contact=Replace(Contact,"'","''")
HomePage=Replace(HomePage,"'","''")
Title=Replace(Title,"'","''")
Content=Replace(Content,"'","''")
Content=Replace(Content,vbcrlf,"<br>    ")


Sql="Insert into board(b_Name,b_face,b_Email,b_Contact,b_HomePage,b_Title,b_Content,b_Time) values"_
&"('"&rName&"','"&rface&"','"&Email&"','"&Contact&"','"&HomePage&"','"&Title&"','"&Content&"','"&Now()&"')"

if iNum=0 Then
cn.Execute(Sql)
End if
iNum=iNum+1

rs.Open "Select id from board where b_Name='"&Trim(rName)&"'",cn,1,3

if rs.RecordCount=2 then
Id1=trim(rs("id"))
rs.MoveNext
Id2=Trim(rs("id"))
if Id2=Id1+1 then
cn.execute "delete from board where id="&id2
end if
end if
rs.Close

Response.Write "<script language=javascript>alert('您的留言已经提交');</script>"
Response.Cookies("Post")="Yes"
ElseIf Request.Cookies("Post")<>"" then
Response.Write "<script language=javascript>alert('您已经留过言了.');</script>"
End If
%>

注释的那些是我用不同的方法插入数据啊,效果等价
hj3793 2005-05-26
  • 打赏
  • 举报
回复
没有重复提交数据,为了防止提交,我用了cookies和一个变量双重确定没有重复才执行sql语句..

可是明明执行一次,确实增加了两条,数据库里的是,页面上显示的也是,另外,我查找新增刚才相同的记录,可以只返回1。
leo963258 2005-05-26
  • 打赏
  • 举报
回复
你把注释的部分都去掉
lovebanyi 2005-05-26
  • 打赏
  • 举报
回复
没有碰到过肯定是重复提交数据了
leo963258 2005-05-26
  • 打赏
  • 举报
回复
怎么可能?

28,406

社区成员

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

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