记一次蛋疼的bug, 微软犯抽,我惨遭毒害。

先说症状,做了一个简答的修改功能,前台填写数据,后台update 数据,就这么简单。

就这么简单的问题,令人蛋疼的事情发生了。怎么保存也保存不成功!!!!

立马开始怀疑人生了。都感觉是不是ET来了,跟我闹着玩呢???

纳尼? 这样也行??

写了10几年的asp 代码了,连个update 搞不定,这个太郁闷了。耐心查吧,一行一行的删代码,看看哪行代码影响了。

最后删了n多代码。终于发现问题在哪里了。

由于网页头部包含一个 top.asp 文件,这个asp 文件里 有一个 header() 函数,这个函数里有一个img 标签。是这样写的 <img src="#" /> .

save 程序 在这个 img 标签之后开始运行的。

然后问题来了,死活更新不上,删掉这个 img 标签里 的 “#”,一切正常,加上就update 失败 ,

诡异的是,当时update成功了,select 检查结果显示也更新成功了。当你打开数据库一看,没成功!!!

感觉像被回滚了一样。 诡异的是还不是回滚了。 回滚了数据会恢复到原来的。 他的情况是 给你留一半 写死的数据,request()的数据给你删掉,然后保存到数据库里。

实在诡异。看图。

有兴趣的兄弟姐妹可以研究一下。只有为什么 不知道! 汗~~

代码如下:

<%
response.Charset="utf-8"
session.CodePage=65001
%>
<img src="#"  />
<%
sub bug(str)
if str="" then
	response.Write "<br>------------------------------QS:------------------------------<br>"&vbcrlf&vbcrlf	
	for each item in request.QueryString
		response.Write item&"="&server.HTMLEncode(request.QueryString(item))&"<br>"&vbcrlf
	next
	response.Write "------------------------------form:------------------------------<br>"&vbcrlf&vbcrlf
	for each item in request.form
		response.Write item&"="&server.HTMLEncode(request.form(item))&"<br>"&vbcrlf&vbcrlf
	next
end if
response.Write server.HTMLEncode(str)&vbcrlf&vbcrlf
response.Write "<br>------------------------------------------------------------<br>"&vbcrlf&vbcrlf
end sub
 
dim server_1,user_1,pw_1,sql_1
Function getConnectionText() '//获取连接语句
	db = "Dat.mdb"      'ACCESS数据库的文件名,请使用相对于网站根目录的的绝对路径
	getConnectionText = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & Server.MapPath(db)
End Function

dim conn, MM_conn_STRING 
Set conn = Server.Createobject("ADODB.Connection")
MM_conn_STRING = getConnectionText() 
conn.commandtimeout=1200
conn.open MM_conn_STRING
dim errmsg
if err.number=0 then
errmsg="数据库操作成功!"
else
Response.write "连接错误"
response.End()
end if

Act_ion = Request("Act_ion")
'Call header()
If Act_ion="Save" Then
	bug ""
	Addr = Trim(Request("Address"))
	response.Write "<br><br>"
'response.Write "update XSD_User set address='"&request("address")&"' where [number]='18661658621'" & "---Address=" & Addr &"|<br>"
		 Sql="Select * From XSD_User Where [number]='18661658621'"
		 Set Rs=Server.CreateObject("ADODB.Recordset")
		Rs.Open Sql,Conn,1,1
		response.Write "更新之前的 address=" & rs("address") &"<br><br>"
		rs.close
		 
		sql= "update XSD_User set address='777" & Addr & "' where ID=491"
		response.Write sql
		conn.execute(sql)
		
		
		Sql="Select * From XSD_User Where [number]='18661658621'"
		Set Rs=Server.CreateObject("ADODB.Recordset")
		Rs.Open Sql,Conn,1,1
		response.Write "<br><br>更新之后的 address=" & rs("address") &"<br><br>"
		rs.close
		
		response.Write "<font color=red>请打开数据库查看数据库里面的数据,就会发现491行数据 并不是“777" & Addr & "”,而是777,去掉第一行的 img标签里的井号就正常了,真奇怪了。</font>"

response.End()

End If

Sql="Select * From XSD_User Where Number='18661658621'"
response.Write sql
Set Rs=Server.CreateObject("ADODB.Recordset")
Rs.Open Sql,Conn,1,1


%>
<form action="?Act_ion=Save" method="post" name="frm" id="frm" target="	_blank">
<div id="config_one" class="tabs_wrapper"><div class="tabs_main">
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="formtable">
<tr>
<td class="formtd_left">会员编号:</td>
<td class="formtd_right"><%=Rs("Number")%></td>
</tr>
<tr >
<td class="formtd_left">联系地址:</td>
<td class="formtd_right"><input type="text" name="Address" id="Address" value="<%=rs("Address")%>" class="text write long" /></td>
</tr>
<tr <%if ("ZipCode")=false then%>style="display:none"<%end if%>>
<td class="formtd_left">邮政编码:</td>
<td class="formtd_right"><input type="text" name="ZipCode" id="ZipCode" disabled = "hidden" value="<%=("ZipCode")%>" class="text write short" /></td>
</tr>
</table>
</div></div>
<div class="actionBox"><span id="btnSpan"><input name="s" id="s" type="button" onClick="document.getElementById('frm').submit();" value="确 定" class="btn save" />&nbsp;&nbsp;<input name="cancelBtn" id="cancelBtn" type="reset" value="取 消" class="actionBtn cancel" /></span></div>
</form>
<%
rs.close
conn.close
%>
 

数据库:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值