主题:  关于更新页!本来一直好好的,突然一夜之间不能用了?

我哭了

职务:普通成员
等级:1
金币:0.0
发贴:148
#12004/10/24 15:43:22
关于更改密码的一个页面,本来一直都好好的,别的更新资料的页面也都正常,唯独这个页面,突然一夜之间就不能用了???我没有对该页进行什么修改啊!!

提交后显示错误信息如下:
错误类型:
Microsoft JET Database Engine (0x80040E14)
UPDATE 语句的语法错误。
/guestbook/modify.asp, 第 111 行

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

网页:
POST 96 ??? /guestbook/modify.asp

第111行处的代码:
106——If (Not MM_abortEdit) Then
107—— ' execute the update
108—— Set MM_editCmd = Server.CreateObject("ADODB.Command")
109—— MM_editCmd.ActiveConnection = MM_editConnection
110—— MM_editCmd.CommandText = MM_editQuery
111—— MM_editCmd.Execute
112—— MM_editCmd.ActiveConnection.Close

望高手们能给指点一下。到底是怎么了。



缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#22004/10/24 15:46:21
Response.Write(MM_editQuery)
Response.end()

Set MM_editCmd = Server.CreateObject("ADODB.Command")

看看输出的SQL语句



我哭了

职务:普通成员
等级:1
金币:0.0
发贴:148
#32004/10/24 15:54:11
不太懂。。。

应该看哪里啊?



我哭了

职务:普通成员
等级:1
金币:0.0
发贴:148
#42004/10/24 15:57:18
是这段吗?

<%
' *** Update Record: construct a sql update statement and execute it

If (CStr(Request("MM_update")) <> "" And CStr(Request("MM_recordId")) <> "") Then

' create the sql update statement
MM_editQuery = "update " & MM_editTable & " set "
For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
MM_formVal = MM_fields(MM_i+1)
MM_typeArray = Split(MM_columns(MM_i+1),",")
MM_delim = MM_typeArray(0)
If (MM_delim = "none") Then MM_delim = ""
MM_altVal = MM_typeArray(1)
If (MM_altVal = "none") Then MM_altVal = ""
MM_emptyVal = MM_typeArray(2)
If (MM_emptyVal = "none") Then MM_emptyVal = ""
If (MM_formVal = "") Then
MM_formVal = MM_emptyVal
Else
If (MM_altVal <> "") Then
MM_formVal = MM_altVal
ElseIf (MM_delim = "'") Then ' escape quotes
MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'"
Else
MM_formVal = MM_delim + MM_formVal + MM_delim
End If
End If
If (MM_i <> LBound(MM_fields)) Then
MM_editQuery = MM_editQuery & ","
End If
MM_editQuery = MM_editQuery & MM_columns(MM_i) & " = " & MM_formVal
Next
MM_editQuery = MM_editQuery & " where " & MM_editColumn & " = " & MM_recordId

If (Not MM_abortEdit) Then
' execute the update
Set MM_editCmd = Server.CreateObject("ADODB.Command")
MM_editCmd.ActiveConnection = MM_editConnection
MM_editCmd.CommandText = MM_editQuery
MM_editCmd.Execute
MM_editCmd.ActiveConnection.Close

If (MM_editRedirectUrl <> "") Then
Response.Redirect(MM_editRedirectUrl)
End If
End If

End If
%>



缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#52004/10/24 16:13:54

Set MM_editCmd = Server.CreateObject("ADODB.Command")
前面加上
Response.Write MM_editQuery
Response.end()

然后会输出一段字符串,就是SQL了



我哭了

职务:普通成员
等级:1
金币:0.0
发贴:148
#62004/10/24 16:43:05
呵呵,是这句吧应该:
update admin set Username = 'icry5',Password = 'admin' where Username = 'icry5'



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#72004/10/24 19:56:51
Password是固定词,应该用[]括起来


非常大鱼

我哭了

职务:普通成员
等级:1
金币:0.0
发贴:148
#82004/10/25 13:19:14
问题解决了!呵呵,谢谢各位高手!原来又是中了Access数据库中保留字的陷阱。。。去掉了俩字母就没事了。
但是有一点不明白的是:数据库名称中使用的是保留字,为什么在当时测试、使用就没有问题,而要过几天后才出现问题呢?



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#92004/10/25 13:26:20
可能在提交时,并没用到保留字,比如没有修改password,而在SQL中不存在password='...'这样语句,一旦你修改密码就出错。


非常大鱼

我哭了

职务:普通成员
等级:1
金币:0.0
发贴:148
#102004/10/26 0:24:49
不是的!当时制作完了以后,我还刻意的修改了好几遍密码看了看修改提交的过程。当时就没有发现问题。而且以前记得也是中过保留字的陷阱,同样是当时没有问题,过几天以后才突然出现的问题。呵呵....怪了

另外,借此机会还想再请教一下高手,用DW作的动态程序,比如留言板什么的会不会很消耗服务器资源?

如果各位高手有兴趣,可以去小弟的网站给提点意见指导一下。呵呵,第一次作自学的,没有经验,很多地方不懂。