从字符串asp和ms访问查询中转义特殊字符

时间:2013-12-19 08:48:20

标签: sql ms-access asp-classic

我有MS Access的ASP代码,我正在更新我的记录。在我在字符串中添加单引号(')等特殊字符时更新时会显示错误。当字符串没有特殊字符时,它可以正常工作。

请帮忙或给出任何解决方案。这是我的代码。

<!--#INCLUDE FILE="ConnStr.asp"-->
dim fileTitle
dim fileDescription
dim fromDateX
dim toDateX
dim romTimeX
dim toTimeX
dim Location
dim LocationURL
dim FileID


 fileTitle= request("fileTitle")
 fileDescription= request("description")
 fromDateX= request("fdate")
 toDateX= request("tdate")
 romTimeX= request("ftime")
 toTimeX= request("ttime")
 Location= request("location")
 LocationURL= request("locationurl")
 FileID= request("jID")


sql = "Update tblFileInfo Set sFDate='" & fromDateX & "',sTDate='" & toDateX & "', sFTime='" & romTimeX & "',sTTime='" & toTimeX & "',location='" & Location & "', locationURL='" & LocationURL & "', filetitle='" & fileTitle & "', description='" & fileDescription & "' Where ID=" & FileID

    objConn.Execute(sql)
    Response.Redirect("adminfiles.asp?msg=save")

2 个答案:

答案 0 :(得分:1)

正如之前的回答所提到的,由于SQL注入,您应该避免以这种方式更新或访问数据库。

如果您的脚本只是用于临时数据库更新和个人使用,那么快速而肮脏的方法是通过使用Replace函数再次重复它来转义撇号。

sql = "Update tblFileInfo Set sFDate='" & Replace(fromDateX,"'","''") & "'  ...."

或者用等效的HTML替换。

sql = "Update tblFileInfo Set sFDate='" & Replace(fromDateX,"'","&#39;") & "'  ...."

如果时间紧张,请不要将其用于快速的一次性脚本。在任何其他情况下都不推荐。

答案 1 :(得分:0)

不要插入这样的参数值,注意SQL注入!

对参数使用ADO Command或创建处理插入/更新的存储过程。这两种解决方案都可以用单引号解决您的问题。这里有一个很好的例子:http://www.xtremevbtalk.com/showthread.php?t=309329#post1337389