我有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")
答案 0 :(得分:1)
正如之前的回答所提到的,由于SQL注入,您应该避免以这种方式更新或访问数据库。
如果您的脚本只是用于临时数据库更新和个人使用,那么快速而肮脏的方法是通过使用Replace函数再次重复它来转义撇号。
sql = "Update tblFileInfo Set sFDate='" & Replace(fromDateX,"'","''") & "' ...."
或者用等效的HTML替换。
sql = "Update tblFileInfo Set sFDate='" & Replace(fromDateX,"'","'") & "' ...."
如果时间紧张,请不要将其用于快速的一次性脚本。在任何其他情况下都不推荐。
答案 1 :(得分:0)
不要插入这样的参数值,注意SQL注入!
对参数使用ADO Command或创建处理插入/更新的存储过程。这两种解决方案都可以用单引号解决您的问题。这里有一个很好的例子:http://www.xtremevbtalk.com/showthread.php?t=309329#post1337389