想修改记录,但却把字段内容变成null了,求解!
一个修改页面mod.asp,通过传递过来的ID读出数据是正常的,但只要读取了这页,无论是否提交表单,数据库中相应ID记录的zds和detail两个字段就会变成null。数据库是SQLServer2000,代码如下:
================================================================
<% Response.Buffer=True %>
<!--#include file= "conn.asp "-->
<%
Id=request( "Id ")
set rs=server.createobject( "adodb.recordset ")
sql= "select * from infodb where Id= " & Id
rs.open sql,conn,3,2
%>
<html>
<head>
<title> </title>
</head>
<body>
<table border= "1 " bordercolordark=#9CC7EF bordercolorlight=#145AA0 cellspacing= "0 " cellpadding= "4 " align= "center " width= "650 " >
<tr>
<td colspan= "2 "> <b> 内容修改 </b> </td>
</tr>
<form method= "POST " action= "mod.asp " name= "addzixun " onSubmit= "return addnew(); ">
<input type= "hidden " name= "Id " size= "20 " value= " <%=Id%> ">
<tr>
<td width= "80 "> 文件编号 </td>
<td>
<input name= "zds " type= "text " id= "zds " size= "20 " value= " <%=rs( "zds ")%> ">
</td>
</tr>
<tr>
<td width= "80 "> 内容 </td>
<td>
<input name= "detail " type= "text " id= "question " size= "60 " value= " <%=rs( "detail ")%> ">
</td>
</tr>
<tr>
<td>
<input type= "submit " value= "确定修改 ">
</td>
</tr>
<%
rs.close
set rs=nothing
%>
</form>
</table>
</body>
</html>
<%
zds=request( "zds ")
detail=request( "detail ")
set rs=server.createobject( "adodb.recordset ")
sql= "select * from infodb where Id= " & Id
rs.open sql,conn,1,3,1
rs( "zds ")=zds
rs( "detail ")=detail
rs( "Id ")=Id
rs.update
rs.close
set rs=nothing
conn.close
set conn=nothing
%>
================================================================
不知道是否字符类型的问题?除Id为int外,所有字段均为nvarchar
谢谢各位
[解决办法]
提交后,别刷新,
写一段代码:
select 一下,如果有值,就说明数据库是有值的.此提交处理的页面没问题,问题在别处,如果没值,就是你这页有问题.
不写的话,直接打开数据库看看记录也行.
然后再找原因.
另外:表单提交,最好写成:request.form形式.否则别人可以不通过表单提交,直接输入:
mod.asp?zds=xxxx&detail=SSSS,一样可以提交.
[解决办法]
<form method= "POST " action= "mod.asp?edit=yes " name= "addzixun " onSubmit= "return addnew(); ">
然后写数据库时判断.如:
<%
if request( "edit ")= "yes " then
zds=request( "zds ")
detail=request( "detail ")
set rs=server.createobject( "adodb.recordset ")
sql= "select * from infodb where Id= " & Id
rs.open sql,conn,1,3,1
rs( "zds ")=zds
rs( "detail ")=detail
rs( "Id ")=Id
rs.update
rs.close
set rs=nothing
conn.close
set conn=nothing
end if
%>