主题:  ASP出现莫名的问题,不解!求解!

fancyren

职务:普通成员
等级:1
金币:0.0
发贴:100
#12003/7/7 20:45:22
帮忙看看,谢谢!

Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14'

[Microsoft][ODBC Microsoft Access Driver] 语法错误 (操作符丢失) 在查询表达式 ''50'','50''' 中。

/include/common.asp,行64

---就是加了个" ' "就不能上传,为什么?

原common的文件内容是:

<%
'****** All parameter must be declared before use
Option Explicit

Const Columns=1,PageSize=8

'****** Define public pramaters and subroutings, usually included in ASP files
Const DatabaseName="include/tongzishandb.mdb"


'****** Prepare connection object, and store it to session
Function Open_Database(SessionName)

Dim conn,connStr

If NOT isObject(Session(SessionName)) Then

Set conn=Server.CreateObject("ADODB.Connection")
connstr="driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath(DatabaseName)
conn.Open connstr
Set Session(SessionName)=conn

End if

Set Open_Database=Session(SessionName)

End Function

Function Open_Database1(SessionName)

Dim conn,connStr

If NOT isObject(Session(SessionName)) Then

Set conn=Server.CreateObject("ADODB.Connection")
connstr="driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("tongzishandb.mdb")
conn.Open connstr
Set Session(SessionName)=conn

End if

Set Open_Database1=Session(SessionName)

End Function


'******* Kill Session

Sub Kill(SessionName)

Set Session(SessionName)=Nothing

End Sub



'****** Prepare recordset object, and store it to session

Function Open_RsPg(conn, sql, SessionName, PageSize)

Dim rs

Set rs=Server.CreateObject("ADODB.Recordset")
rs.Open sql,conn,1

Set Session(SessionName)=rs
rs.PageSize=PageSize
Set Open_RsPg=Session(SessionName)

End Function
%>



缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#22003/7/7 20:49:15
Replace(xxx,"'","")



fancyren

职务:普通成员
等级:1
金币:0.0
发贴:100
#32003/7/7 20:53:41
谢谢您的回复!不了解您的说法

数据库里面的两个字段都不支持,例如像要添加内容为50'

就不能上传,如何改!



fancyren

职务:普通成员
等级:1
金币:0.0
发贴:100
#42003/7/7 21:14:05
谢谢楼上的先生,可以说具体一点吗?

如何做~

(我是一个刚入门的新手,还请多多指教)



绿茶

职务:普通成员
等级:8
金币:10.0
发贴:19267
#52003/7/7 21:22:33
在插入数据库中,
SQL语句对于一些特殊字符会出错,所以对这些数据要先进行处理,用上面那种方式来把'替换成''。
也可以使用server.htmlencode来处理

a=server.htmlencode(trim(request("a")))
这些,就算有'也没关系了



fancyren

职务:普通成员
等级:1
金币:0.0
发贴:100
#62003/7/7 21:22:38
allinhands,可以告诉我详细一点吗?

非常的感谢!@

编辑历史:[这消息被fancyren编辑过(编辑时间2003-07-07 21:23:09)]


绿茶

职务:普通成员
等级:8
金币:10.0
发贴:19267
#72003/7/7 21:27:59
给你一个函数吧,用来处理大段文本
function HTMLEncode(fString)
if trim(fstring)<>"" or not isnull(fstring) then
    fString = replace(fString, ">", ">")
    fString = replace(fString, "<", "<")
    fString = Replace(fString, CHR(13), "")
    fString = Replace(fString, CHR(10) & CHR(10), "

") fString = Replace(fString, CHR(10), "
") fString = Replace(fString, " "," ") fstring = replace(fstring,"'","''") HTMLEncode = fString end if end function


编辑历史:[这消息被germchen编辑过(编辑时间2003-07-07 21:28:41)]


fancyren

职务:普通成员
等级:1
金币:0.0
发贴:100
#82003/7/7 21:41:29
哦,很清楚!谢谢!

但是我放在程序里面,还是不行!

可以再教我一下吗?



fancyren

职务:普通成员
等级:1
金币:0.0
发贴:100
#92003/7/7 21:47:14
这样可能可以解决问题,

但因为客户要求的是用 ' 表示 英寸的,有更好一点的办法吗?

如果是用
function HTMLEncode(fString)
if trim(fstring)<>"" or not isnull(fstring) then
fstring = replace(fstring,"'","`")
HTMLEncode = fString
end if
end function
加在哪里比较适合~

编辑历史:[这消息被fancyren编辑过(编辑时间2003-07-07 21:50:58)]


缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#102003/7/7 21:58:39
比如标题里面包含',那么就是HTMLEncode(Request.form("title"))



fancyren

职务:普通成员
等级:1
金币:0.0
发贴:100
#112003/7/7 22:00:56
可以加在common里面吗?加在哪个地方好!

我要暂换每一个上传带有 ' 的内容!



缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#122003/7/7 22:01:58
你在sql种避免使用'做引号,如果需要得话用两个"",比如原来得'something'用""something""代替



缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#132003/7/7 22:03:52
fancyren在上个帖子中说
引用:
可以加在common里面吗?加在哪个地方好!

我要暂换每一个上传带有 ' 的内容!


加上顶上好了,然后给沒各要处理得数据用HTMLEncode()包含起来



fancyren

职务:普通成员
等级:1
金币:0.0
发贴:100
#142003/7/7 22:05:58
但因为客户要求的是用 ' 表示 英寸的

例如50',一定要这样客户才满意

郁闷~



绿茶

职务:普通成员
等级:8
金币:10.0
发贴:19267
#152003/7/7 22:08:15
不是说了用server.htmlencode()来处理啊,然后插入数据库
还是可以显出出单引号的