论坛: 编程破解 标题: 留言提交不进数据库,但能从数据库读取,为什么? 复制本贴地址    
作者: ljsh012 [ljsh012]    论坛用户   登录
我在我的xp上写了个留言簿,数据库是microsoft access,运行一切正常,但把它放到2000server上时,留言提交不进数据库,但能从数据库读取留言。提交时错误时这样的:
HTTP 500.100 - 内部服务器错误 - ASP 错误
Internet 信息服务

--------------------------------------------------------------------------------

技术信息(适用于支持人员)

错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
/sys/sys/gform.asp, 第 40 行


浏览器类型:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)

页:
POST 41 bytes to /sys/sys/gform.asp

POST 数据:
name=b&email=b&subject=b&memo=b&tijiao=ok

时间:
2004年3月29日, 14:13:49
怎么解决?

地主 发表时间: 04-03-29 14:11

回复: 286 [unique]   版主   登录
你看看你的access数据库是不是access97下作的。
如果是你用access2000打开,打开时会提示你是否进行转换,你转换一下就行了。

B1层 发表时间: 04-03-29 14:54

回复: ljsh012 [ljsh012]   论坛用户   登录
回版主,我是在xp下做的数据库,在2000server上打开一切正常,不只是何原因?请版主再劳神想想是啥问题?多谢了。

B2层 发表时间: 04-03-29 22:04

回复: 286 [unique]   版主   登录

贴源码,

B3层 发表时间: 04-03-30 08:54

回复: yingzike [yingzike]   论坛用户   登录
UPDATE 还是 INSERT ?
强烈要求贴源码!

B4层 发表时间: 04-03-30 14:03

回复: ljsh012 [ljsh012]   论坛用户   登录
提交页面是gform.htm,处理提交页面的是gform.asp,读取的页面是gbook.asp.分别如下:
"gform.htm"
<script language="VBScript" type="text/VBScript">
<!--
sub titiao_onclick()
if (mynote.name.value="") then
alert ("no")
exit sub
end if
if (mynote.email.value="") then
alert ("no")
exit sub
end if
if (mynote.subject.value="") then
alert ("no")
exit sub
end  if
if (mynote.memo.value="") then
alert ("no")
exit sub
end if
mynote.submit
end sub
-->
</script>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body bgcolor="#006666">
<div align="center"><font size="+5" face="华文行楷">淡蓝色的留言簿 </font></form>
  <form action="gform.asp" method="post" name="mynote" id="mynote">
    <table width="75%" border="0">
      <tr>
        <td><div align="center">您的大名:
            <input name="name" type="text" id="name">
          </div></td>
      </tr>
      <tr>
        <td><div align="center">电子邮件:
            <input name="email" type="text" id="email">
          </div></td>
      </tr>
      <tr>
        <td><div align="center">留言主题:
            <input name="subject" type="text" id="subject">
          </div></td>
      </tr>
      <tr>
        <td><div align="center">留言内容:
            <textarea name="memo" rows="4" id="memo"></textarea>
          </div></td>
      </tr>
      <tr>
        <td><div align="center">
            <input name="tijiao" type="submit" id="submit" value="ok">
               
            <input name="reset" type="reset" id="reset" value="Reset">
          </div></td>
      </tr>
      <tr>
        <td><div align="center"><a href="gbook.asp">察看留言</a></div></td>
      </tr>
    </table>
    <p>&nbsp;</p>
    <p>&nbsp; </p>
    <p>&nbsp; </p>
    <p>&nbsp;</p>
    <p>         </p>
    <p>&nbsp; </p>
  </form>
  <p align="left">&nbsp;</p>
</div>
</body>
</html>

"gform.asp"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>

<body>
<%
dim name
dim email
dim subject
dim memo
function sqlstr(date)
sqlstr="'"&replace(date,"'","''")&"'"
end function
name=request.form("name")
email=request.form("email")
subject=request.form("subject")
memo=request.form("memo")
name=left(name,40)
email=left(email,80)
subject=left(subject,127)
name=trim(name)
email=trim(email)
subject=trim(subject)
if name="" or email="" or subject="" or memo="" then
response.write "字段不能为空"
response.end
end if
application.lock
set conn=server.createobject("adodb.connection")
dbpath=server.mappath("gbook.mdb")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&dbpath
sql="insert into guestbook(姓名,email,主题,留言) values("
sql=sql&sqlstr(name)&","
sql=sql&sqlstr(email)&","
sql=sql&sqlstr(subject)&","
sql=sql&sqlstr(memo)&")"
conn.execute(sql)
application.unlock
response.write "<h2 align=center>留言成功!请<a href=""gform.htm"">返回</a>留言页面或<a href=""gbook.asp"">查看留言</a></h2>"
%>

</body>
</html>

"gbook.asp"他能从数据库中读取数据。但上面的gform.asp提交不进数据库。
<%
sub print(objgbrs)
writetab="<table border=0 width=""100%"">"
writetab=writetab&"<tr><td>作者:"&objgbrs("姓名")&"</td>"
writetab=writetab & "<tr><td>e-mail: <a href=""mailto:" & objgbrs("email") & """>"
writetab=writetab & objgbrs("email")&"</td>"
writetab=writetab&"<tr><td colspan=2>主题:"&objgbrs("主题")&"</td></tr>"
memo=replace(objgbrs("留言"),chr(13),"<br>")
writetab=writetab    &    "<tr><td colspan=2 bgcolor=#00ffff><pre><font size=+1>"
writetab=writetab&memo&"</font></pre></td></tr>"
writetab=writetab&"<tr><td colspan=2>时间:"&objgbrs("时间")&"</td></tr>"
writetab=writetab&"<tr height=20></tr>"
writetab=writetab&"</table>"
response.write writetab
end sub
%>
<html>
<head><title>淡蓝色的留言簿</title>
</head>
<body    text="#000000"  bgcolor="#ffffff" >
<h2 align=center>淡蓝色的留言簿</h2>
<p align=center><a href="gform.htm">返回留言记录单</a></p>
<h2 align=center>
  <hr width="100%">
</h2>
<table width="75%" border="1" align="center">
  <tr>
    <td height="22" bordercolor="#00FFFF" bgcolor="#33CCFF">
      <%
dim objgbrs
set conn=server.createobject("adodb.connection")
dbpath=server.mappath("gbook.mdb")
conn.open  "driver={microsoft access driver (*.mdb)};dbq="&dbpath
sql="select * from guestbook order by 时间 desc"
set objgbrs=conn.execute(sql)
while not objgbrs.eof
print objgbrs
objgbrs.movenext
wend
%>
    </td>
  </tr>
</table>
<center><a href="gform.htm">返回留言记录单</a></center>
</body>
</html>


B5层 发表时间: 04-03-30 21:52

回复: bailove [bailove]   论坛用户   登录
----------------------------------------------------
application.lock
set conn=server.createobject("adodb.connection")
dbpath=server.mappath("gbook.mdb")
conn.open "driver={microsoft access driver (*.mdb)};dbq="&dbpath
sql="insert into guestbook(姓名,email,主题,留言) values("
sql=sql&sqlstr(name)&","
sql=sql&sqlstr(email)&","
sql=sql&sqlstr(subject)&","
sql=sql&sqlstr(memo)&")"
conn.execute(sql)
application.unlock
---------------------------------
我也觉的你好象可以
但你可以换一种的提交方式试试,前面<!--#include file="conn.asp"-->
sql="select * from [guestbook]"
set rs=server.createobject("adodb.recordset")
rs.open sql,conn,1,3
rs.addnew
.
.
.
rs.update
rs.close
set rs=nothing
======================
conn.asp
<%
dim startime
dim conn
dim connstr
startime=timer()

Set conn = Server.CreateObject("ADODB.Connection")
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("gbook.mbd" )
conn.Open connstr

function CloseDatabase

Conn.close
Set conn = Nothing

End Function
%>
-------------------
我想问下memo=replace(objgbrs("留言"),chr(13),"<br>")中的chr(13)是“空格”或“回车符”
之类的东西是吗?


B6层 发表时间: 04-03-31 09:08

回复: 286 [unique]   版主   登录
由于没有数据库,所以也无法判断具体哪错了,
但我感觉你创建的好多对象怎么没有关闭呀。
比如conn,objgbrs。

一则建议你把数据库在2000下再打开后重新保存一下,别外按bailove的方法试试。


chr(13)是换行。


B7层 发表时间: 04-03-31 09:26

回复: yingzike [yingzike]   论坛用户   登录
sql="insert into guestbook(姓名,email,主题,留言) values("
sql=sql&sqlstr(name)&","
sql=sql&sqlstr(email)&","
sql=sql&sqlstr(subject)&","
sql=sql&sqlstr(memo)&")"
conn.execute(sql)
============================================================
这此提交还对?
sql = ??? 这样下来都等于什么了?


B8层 发表时间: 04-03-31 09:29

回复: ljsh012 [ljsh012]   论坛用户   登录
关于这个问题我在很多机子试过了,发现在某些机子上可以成功运行,在有些机子上说程序缺少"end" ,而且说是应该用更新操作。估计上面b6层说的对。但我没有试过。
这其中的原因为什么我也不懂。为什么在一些机子上可以运行而在一些机子上却不能运行。有待高手解答。
谢谢以上的弟兄们。高手们!

B9层 发表时间: 04-04-30 00:03

回复: li8111 [li8111]   论坛用户   登录
该不会是没有写数据所在的文件夹权限吧???

B10层 发表时间: 04-04-30 01:27

回复: 286 [unique]   版主   登录
这么久了还没解决吗?
要不你把程序发过来,我找个XP帮你试试。

B11层 发表时间: 04-04-30 09:32

回复: ljsh012 [ljsh012]   论坛用户   登录
286高手,大哥,怎么把程序发给你啊,网上龙腾留言簿也有像我这个程序的问题,报告同样的错误。你可以下载一个龙腾留言簿试试。奇怪的很,在一些机子上2000server上可以运行但在另外一些上2000server上却不能运行,他说留言操作应为更新操作。缺少end.
感谢286大哥无限的奉献。
开始我觉得是iwam_计算机名这个用户有问题。后又怀疑tsinternetuser这个用户有问题。但好像都不是。问一下,tsinternetuser这个用户被别人 添加到管理员组,而且被改了密码,对asp运行没有影响罢,我看过一篇文章说是跟iwam_计算机名,这个用户有关系。你看看去。
握,好像是286大姐啊,抱歉抱歉,希望不是变性。

[此贴被 ljsh012(ljsh012) 在 04月30日11时11分 编辑过]

B12层 发表时间: 04-04-30 11:04

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号