修改页面为什么不能更新数据库呢?

galaxyvenus 2003-01-18 09:20:25
<%

name=Request.form("name")
sex=Request.Form("sex")
b_year=Request.Form("b_year")
nation=Request.Form("nation")
clan=Request.Form("clan")
study=Request.Form("study")
graduate=Request.Form("graduate")
sp=Request.Form("sp")
e_sp=Request.Form("e_sp")
units=Request.Form("units")
ttoatp=Request.Form("ttoatp")
duty=Request.Form("duty")
dp=Request.Form("dp")
tel=Request.Form("tel")
fax=Request.Form("fax")
message=Request.Form("message")
email=Request.Form("email")
eresume=Request.Form("eresume")
grade=Request.Form("grade")
remark=Request.Form("remark")
ratify=Request.Form("ratify")

dim conn,connstr
on error resume next
'connstr="DBQ="+server.mappath("E:\home\sunrise-star\www\fashion\member\database\member.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"

connstr="DBQ="+server.mappath("database\member.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
Set conn=Server.CreateObject("ADODB.CONNECTION")
conn.open connstr



dim rs,sql,sqlstmt

set rs=Server.CreateObject("Adodb.Recordset")

sql = "SELECT * FROM mem"
rs.open sql,conn,1,3
rs.addnew
sqlstmt="update mem"
sqlstmt=sqlstmt & " set name='" & name & "'"

sqlstmt=sqlstmt & " sex='" & sex & "'"

sqlstmt=sqlstmt & " b_year='" & b_year & "'"

sqlstmt=sqlstmt & " nation='" & nation & "'"

sqlstmt=sqlstmt & " clan='" & clan & "'"

sqlstmt=sqlstmt & " study='" & study & "'"

sqlstmt=sqlstmt & " graduate='" & graduate & "'"

sqlstmt=sqlstmt & " sp='" & sp & "'"

sqlstmt=sqlstmt & " e_sp='" & e_sp & "'"

sqlstmt=sqlstmt & " units='" & units & "'"

sqlstmt=sqlstmt & " ttoatp='" & ttoatp & "'"

sqlstmt=sqlstmt & " duty='" & duty & "'"

sqlstmt=sqlstmt & " dp='" & dp & "'"

sqlstmt=sqlstmt & " tel='" & tel & "'"

sqlstmt=sqlstmt & " fax='" & fax & "'"

sqlstmt=sqlstmt & " message='" & message & "'"

sqlstmt=sqlstmt & " email='" & email & "'"

sqlstmt=sqlstmt & " eresume='" & eresume & "'"

sqlstmt=sqlstmt & " grade='" & grade & "'"

sqlstmt=sqlstmt & " remark='" & remark & "'"

sqlstmt=sqlstmt & " ratify='" & ratify & "'"


sqlstmt=sqlstmt & " where name='" & name&"'"
set rs = conn.execute(sqlstmt)

reponse.write "恭喜!您已经注册成功."
reponse.write "<br>请根据我们的规定交纳会费,"
reponse.write "同时享受我们的会员权力."
reponse.write "<br><a href='index.asp'>返回主页面</a>"

rs.close
set rs=nothing
conn.close
set conn=nothing
%>


<html>
<head>
<title>会员申请表</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body link="#000000" vlink="#000000" alink="#000000">

</body>
</html>

---------------------------------------------------------------------
以上就是编辑页面源代码,但是为什么不能更新数据库呢???
...全文
163 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
galaxyvenus 2003-01-20
  • 打赏
  • 举报
回复
to:cshadow(影子)

好像不行啊,没有更新,:(
antiking 2003-01-18
  • 打赏
  • 举报
回复
你要实现个什么功能呀,是更改原有的数据么。竟然以使用了update 何又接着使用addnew,何不直接使用"update tabel1 set 字段1=...,字段2=... where 条件"
你的好麻烦呀。
dim str_button=request("button")
select case str_button
case "保存"
...........
case "修改"
...........
"update tabel1......................."
..................
end select
galaxyvenus 2003-01-18
  • 打赏
  • 举报
回复
to dishui(dishui)

那几个字段可以为空的,

galaxyvenus 2003-01-18
  • 打赏
  • 举报
回复
to cshadow(影子)
我不会灰心。
:)

你说的把内容copy到数据库中是什么意思?

我是做一个注册程序,现在是想通过name字段传递,然后修改,
dishui 2003-01-18
  • 打赏
  • 举报
回复
grade='' remark='' ratify='' 你这几个允许为空吗?你可以尝试先更新一个字段开始啊,有时可能用了不该用的单词做为你的字段名称,先从最简单的剥起……不要一下子都更新,先更新一个看看
cshadow 2003-01-18
  • 打赏
  • 举报
回复
不要灰心嘛.呵呵
和打开方式没有关系,那个可以删掉,没有什么用.
注意不要修改name,还有前面的表单,不能存在名字为name的,可以修改的.
然后再把内容copy到数据库中执行下试试,能不能正常运行?
galaxyvenus 2003-01-18
  • 打赏
  • 举报
回复
to hanbinxie(寒星)
我按你说的改了,但还是写不进去,

唉~~~~~
galaxyvenus 2003-01-18
  • 打赏
  • 举报
回复
tocshadow(影子)
我试过了,就算不修改name,修改其他的字段也无法写入数据库

怎么办呢??
hanxin0106 2003-01-18
  • 打赏
  • 举报
回复
rs.open sql,conn,1,3 改为rs.open sql,conn,3,3 试试
cshadow 2003-01-18
  • 打赏
  • 举报
回复
用userid来作为条件,或者name不允许修改
cshadow 2003-01-18
  • 打赏
  • 举报
回复
update mem set name='213aaa' sex='女' b_year='22222222222' nation='2' clan='222222235' study='345' graduate='345' sp='34' e_sp='53' units='53' ttoatp='45' duty='353534' dp='345' tel='3535' fax='4' message='5' email='' eresume='534555555555555555555553455555555555555555555345555555555555555555553455555555555555555555345555555555555555555' grade='' remark='' ratify='' where name='213aaa'

很明显,你的name是用来更改的条件,怎么还能更改呢?前一页中name应该是readonly的,如果他更改了,数据库中很可能没有这条记录啊?你明白了吗??
csdntoll 2003-01-18
  • 打赏
  • 举报
回复
userid应该是不变的,你可以从前一个文件传递一个userid的数值,如:
modify.asp?userid=23
在modify.asp中取得此数值
userid=request.querystring("userid")
galaxyvenus 2003-01-18
  • 打赏
  • 举报
回复
csdntoll()兄说的和我执行的结果差不多,先修了,然后where又去找修改后的了,就找不到了,

像我上面出现的错误,以前是name='213'修改后变成name='213aaa' 然后 where name='213aaa'
数据库里没有,应该还是where name='213'吧,这个怎么实现呢??

galaxyvenus 2003-01-18
  • 打赏
  • 举报
回复
to cshadow(影子)

我已经按你说的改了,但是还是没有写入数据库,显示为:

update mem set name='213aaa' sex='女' b_year='22222222222' nation='2' clan='222222235' study='345' graduate='345' sp='34' e_sp='53' units='53' ttoatp='45' duty='353534' dp='345' tel='3535' fax='4' message='5' email='' eresume='534555555555555555555553455555555555555555555345555555555555555555553455555555555555555555345555555555555555555' grade='' remark='' ratify='' where name='213aaa'
windancer 2003-01-18
  • 打赏
  • 举报
回复
update为什么还要addnew啊,可能是数据库操作出错了,被忽略了.
csdntoll 2003-01-18
  • 打赏
  • 举报
回复
----------------------------
where name='" & name&"'"
----------------------------
你这句CODE有没问题?
你的& name&是修改后的数据,怎么能和修改前的等值呢?
是否应该换个判断条件,比如:
where userid="&userid&"
galaxyvenus 2003-01-18
  • 打赏
  • 举报
回复
加上检查代码,然后运行,显示错误:

Database Errors Occured
update mem set name='213' sex='女' b_year='22222222222' nation='2' clan='222222235' study='345' graduate='345' sp='34' e_sp='53' units='53' ttoatp='45' duty='353534' dp='345' tel='3535' fax='4' message='5' email='' eresume='53455555555555555555555345555555555555555555534555555555555555555555555345555555555555555555' grade='' remark='' ratify='' where name='213'

Error #-2147217900

Error desc. -> [Microsoft][ODBC Microsoft Access Driver] 语法错误 (操作符丢失) 在查询表达式 ''213' sex='女' b_year='22222222222' nation='2' clan='222222235' study='345' graduate='345' sp='34' e_sp='53' units='53' ttoatp='45' duty='353534' dp='345' tel='3535' fax='4' message='5' email='' eresume='5345555555555555555555534555555555555555555553455555555' 中。
cshadow 2003-01-18
  • 打赏
  • 举报
回复

dim rs,sql,sqlstmt

set rs=Server.CreateObject("Adodb.Recordset")

sql = "SELECT * FROM mem"
rs.open sql,conn,1,3

都删掉

sqlstmt=sqlstmt & " where name='" & name&"'"
下面写
response.write sqlstmt
response.end

把结果copy到数据库中看看是否执行?如果执行了,说明没有语法错误.是数据库问题,如果不执行,就是语法错误,检查各个字段的类型.
galaxyvenus 2003-01-18
  • 打赏
  • 举报
回复
我已经加了检查错误的代码:

<%

name=Request.form("name")
sex=Request.Form("sex")
b_year=Request.Form("b_year")
nation=Request.Form("nation")
clan=Request.Form("clan")
study=Request.Form("study")
graduate=Request.Form("graduate")
sp=Request.Form("sp")
e_sp=Request.Form("e_sp")
units=Request.Form("units")
ttoatp=Request.Form("ttoatp")
duty=Request.Form("duty")
dp=Request.Form("dp")
tel=Request.Form("tel")
fax=Request.Form("fax")
message=Request.Form("message")
email=Request.Form("email")
eresume=Request.Form("eresume")
grade=Request.Form("grade")
remark=Request.Form("remark")
ratify=Request.Form("ratify")

dim conn,connstr
on error resume next
'connstr="DBQ="+server.mappath("E:\home\sunrise-star\www\fashion\member\database\member.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"

connstr="DBQ="+server.mappath("database\member.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
Set conn=Server.CreateObject("ADODB.CONNECTION")
conn.open connstr



dim rs,sql,sqlstmt

set rs=Server.CreateObject("Adodb.Recordset")

sql = "SELECT * FROM mem"
rs.open sql,conn,1,3
sqlstmt="update mem"
sqlstmt=sqlstmt & " set name='" & name & "'"

sqlstmt=sqlstmt & " sex='" & sex & "'"

sqlstmt=sqlstmt & " b_year='" & b_year & "'"

sqlstmt=sqlstmt & " nation='" & nation & "'"

sqlstmt=sqlstmt & " clan='" & clan & "'"

sqlstmt=sqlstmt & " study='" & study & "'"

sqlstmt=sqlstmt & " graduate='" & graduate & "'"

sqlstmt=sqlstmt & " sp='" & sp & "'"

sqlstmt=sqlstmt & " e_sp='" & e_sp & "'"

sqlstmt=sqlstmt & " units='" & units & "'"

sqlstmt=sqlstmt & " ttoatp='" & ttoatp & "'"

sqlstmt=sqlstmt & " duty='" & duty & "'"

sqlstmt=sqlstmt & " dp='" & dp & "'"

sqlstmt=sqlstmt & " tel='" & tel & "'"

sqlstmt=sqlstmt & " fax='" & fax & "'"

sqlstmt=sqlstmt & " message='" & message & "'"

sqlstmt=sqlstmt & " email='" & email & "'"

sqlstmt=sqlstmt & " eresume='" & eresume & "'"

sqlstmt=sqlstmt & " grade='" & grade & "'"

sqlstmt=sqlstmt & " remark='" & remark & "'"

sqlstmt=sqlstmt & " ratify='" & ratify & "'"


sqlstmt=sqlstmt & " where name='" & name&"'"
set rs = conn.execute(sqlstmt)



If err.number>0 then
response.write "VBScript Errors Occured:" & "<P>"
response.write "Error Number=" & err.number & "<P>"
response.write "Error Descr.=" & err.description & "<P>"
response.write "Help Context=" & err.helpcontext & "<P>"
response.write "Help Path=" & err.helppath & "<P>"
response.write "Native Error=" & err.nativeerror & "<P>"
response.write "Source=" & err.source & "<P>"
response.write "SQLState=" & err.sqlstate & "<P>"
end if
IF conn.errors.count> 0 then
response.write "Database Errors Occured" & "<P>"
response.write SQLstmt & "<P>"
for counter= 0 to conn.errors.count
response.write "Error #" & conn.errors(counter).number & "<P>"
response.write "Error desc. -> " & conn.errors(counter).description & "<P>"
next
else
' 如果没有发现错误,将提示用户修改成功。
response.write "<font face='arial' size=4>"
response.write "<br><br>记录已经被成功修改."
response.write "</b></font>"
end if
' 关闭数据库连接
Conn.Close
Set Conn=nothing
%>


<html>
<head>
<title>会员申请表</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body link="#000000" vlink="#000000" alink="#000000">

</body>
</html>
----------------------------------------------------------------

chenqianliang 2003-01-18
  • 打赏
  • 举报
回复
你先将on error resume next这条语句注释掉,等调试完成后再加上这句

或者你在后面加上检查错误的代码:

if err.number<>0 then
response.write err.source
response.write "<BR>"&err.number
response.write "<BR>"&err.description
end if

这样你在测试过程中如果是更新数据库不成功的话,他就会提示出错信息,你可以根据信息进行修改
加载更多回复(17)
简介: 1、多级目录,每个目录下面可以有更深一级目录,并列出属于该目录的网站 管理:选择分类管理,添加需要的分类,或者选择下一级目录,同时可以选择删除(删)修改(修)制作(制)某一个目录 2、静态页面,所有目录页面均使用程序生成了html页,不用读取数据库,大大节省了服务器资源 管理:选择制作下属页面,系统会列出搜索的类别,请选择需要生成的类别 3、目录模版,在数据库中存放了大量的页面模版,每一个目录都可以订制自己的网面 管理:选择模板管理,系统会列出目前已经存在的模板,你可以修改,添加,删除,添加时请按照示例进行制作,建议先将数据库备份再修改 4、即时登陆网站,站长可以随时登陆自己的网站,但是登陆以后只能在他选定的目录所显示的页面中的“更多”网站页面中显示出来,只有在管理员审查并生成页面以后才能直接在目录页面看到 5、模糊查找, 6、布尔查找,支持and(*) or(|) not(-)等布尔表达式 例如:烟台*一百-新闻 或者:烟台 and 一百 not 新闻 如果只需要and连接,可以只输入 烟台 一百,这与 烟台*一百、烟台 and 一百 效果等同 搜索结果将会把相关关键词以特殊的颜色显示出来 7、常用关键词页面自动生成,用户输入查找的关键词都保存在数据库中,如果有相同的关键词则这些关键词数量累加,管理员管理的时候可以生成排名在头几位的关键词页面,也就是提前替用户把这些关键词提前搜索出来了,并且生成了静态的html页面,用户在搜索这些关键词时,就可以直接显示这些已经生成的页面,避免了大量的查询数据库,节省了服务器资源 管理:选择关键词管理,系统会列出数据库中已经存在的可以生成的关键词,以及网友在使用这个搜索引擎时用的关键字(只选取排名头100个),管理员可以随意生成需要的关键词页面 8、网站顺序,在某个目录下的网站数目很多的时候,排在上面的网站被访问的几率比排在下面的网站几率要大得多,因此我又增加排名功能,管理员可以设定某个网站在该目录下的排名 9、单目录搜索,当用户在某个目录浏览的时候,可以选择在该目录下搜索和搜索全部目录,选择在该目录下搜索可以只搜索属于该目录以及该目录的子目录下的网站 10、静态页面在线生成,在管理界面可以在线生成所有目录下的页面以及关键词页面 11、二次搜索功能,当用户在搜索某个关键词以后,系统列出了〉20个结果以后,就会出现二次搜索界面,用户可以选择在这些结果中再次搜索,比如要求结果必须不包含某个关键词或者必须再包含某个关键词 12、模版的在线修改,不同的页面模版有不同的规则 14、所有目录在线动态修改,自动更新以前的页面 15、动态生成网站首页(需要模版支持) 16、分类参照:指一个分类类目名分在一个上级类目下,而在另一个类目下作参照。以@作后缀的类目名。

28,391

社区成员

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

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