注册 登录
编程论坛 ASP技术论坛

[求助]ASP程序有个问题

weishj 发布于 2007-10-07 20:55, 370 次点击
大家好,我刚刚学ASP,今天编了个留言本,但有时可以执行,有时却不行,真是怪事,请高手们帮下忙,谢谢。
显示留言那部分代码没有问题,估计是添加记录时出了什么问题。
数据库各字段如下:
ID time ip message title email name qq homepage
自动编号 日期 文本 文本 文本 文本 文本 数字 文本
数据库名:post.mdb
<%
'-------------------------------------------------下面代码用于处理新留言----------------------
if request.Form("name")<>"" then
if request.Form("title")<>"" then
if request.Form("msg")<>"" then
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("post.mdb")
set rs1=server.CreateObject("adodb.recordset")
sqlstr1="select * from msg"
rs1.open sqlstr1,conn1,3,3
rs1.movelast
rs1.addnew
'------------------------------------------------向数据库中写入数据-----------------------------
rs1("qq")=request.Form("QQ")
rs1("email")=request.Form("email")
rs1("name")=request.Form("name")
rs1("homepage")=request.Form("homepage")
rs1("title")=request.Form("title")
rs1("message")=request.Form("msg")
rs1("time")=now()
dim userip
userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If userip = "" Then
userip = Request.ServerVariables("REMOTE_ADDR")
end if
rs1("ip")=userip
rs1.update
rs1.close
conn1.close
set rs1=nothing
set conn1=nothing
response.redirect("index.asp")
end if
end if
end if
'-------------------------------------------------处理留言部分结束----------------------------
%>

[此贴子已经被作者于2007-10-7 21:05:58编辑过]

4 回复
#2
shaoli42612007-10-07 22:16
<%
'-------------------------------------------------下面代码用于处理新留言----------------------
if request.Form("name")<>"" then
if request.Form("title")<>"" then
if request.Form("msg")<>"" then
Set conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("post.mdb")
set rs1=server.CreateObject("adodb.recordset")
sqlstr1="select * from msg"
rs1.open sqlstr1,conn1,3,3
rs1.addnew
'------------------------------------------------向数据库中写入数据-----------------------------
rs1("qq")=request.Form("QQ")
rs1("email")=request.Form("email")
rs1("name")=request.Form("name")
rs1("homepage")=request.Form("homepage")
rs1("title")=request.Form("title")
rs1("message")=request.Form("msg")
rs1("time")=now()
dim userip
userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If userip = "" Then
userip = Request.ServerVariables("REMOTE_ADDR")
end if
rs1("ip")=userip
rs1.update
rs1.close
conn1.close
set rs1=nothing
set conn1=nothing
response.redirect("index.asp")
end if
end if
end if
'-------------------------------------------------处理留言部分结束----------------------------

既然是增加一条信息,为什么好要用rs1.movelast啊?我不知道~~~

[此贴子已经被作者于2007-10-7 22:17:40编辑过]

#3
madpbpl2007-10-07 22:18

不行的时候报什么错?

#4
天涯听雨2007-10-07 22:25
你的QQ字段用的是数字数据类型,在入库前请一定保证是数字类型。。而且必须是半角态下

If not isNumeric(trim(request.Form("QQ"))) then
response.write "<script LANGUAGE='javascript'>alert('请正确输入QQ号,只能为数字类型!');history.go(-1);</script>"
response.end
end if

你在建立记录集打开数据库时用如下会快

set rs1=server.CreateObject("adodb.recordset")
sqlstr1="select top 1 * from msg" '不要全部打开,全部打开是需要时间的
rs1.open sqlstr1,conn1,1,3

#5
weishj2007-10-08 10:49

非常感谢楼上几位,我刚刚接触ASP,还是一个人在黑夜中摸索.幸亏有论坛的各位兄弟的帮助.
去掉了那个movelast,检验一下输入合法性问题解决了

[CODE]你在建立记录集打开数据库时用如下会快

set rs1=server.CreateObject("adodb.recordset")
sqlstr1="select top 1 * from msg" '不要全部打开,全部打开是需要时间的
rs1.open sqlstr1,conn1,1,3

[/CODE]
非常感谢

[此贴子已经被作者于2007-10-8 10:50:03编辑过]

1