ASP替换功能不起作用

时间:2015-02-04 16:26:34

标签: ms-access asp-classic response apostrophe

<%  
Dim objRs 
Dim conn
Dim strSearchString

strSearchString = Request.Form("name")     
Set objRs = Server.CreateObject("ADODB.recordset")
objRs.CursorLocation = 3
set conn = Server.CreateObject("ADODB.Connection")
conn.open "Data Source=" & Server.Mappath("../db/certs.mdb") & ";Provider=Microsoft.Jet.OLEDB.4.0;"

'replace apostrophe in name to avoid issues
strSearchString = Replace(strSearchString.tostring, "'", "''")

'Sql Query
sql = "Select * FROM [cert] Where [name] like '" & strSearchString & "'"

'open connection
ObjRs.Open sql,conn

'setup the table
with response
    .write "<table border=1 width=100% cellspacing=0 cellpadding=0 class=CustomerTable>" & vbcrlf
    .write "<tr>"
    .write "<th class=AccName colspan=9><div align=center>" & strSearchString & "'s Certifications</div></th></tr>"
    .write "<tr>" & vbcrlf
    .write "<th class=AccName>Name</th>"
    .write "<th class=AccName>Certification</th>"
    .write "<th class=AccName>Date Completed</th>"
    .write "<th class=AccName>Industry</th>"
    .write "<th class=AccName colspan=2>Certification #</th>"
    .write "<th class=AccName>Vendor</th>"
    .write "<th class=AccName>Date Expires</th>"
    .write "<th class=AccName><a href='viewall_sortTechnology.asp'>Technology</a></th>"
    .write "</tr>" & vbcrlf
End with
%>

我正在尝试使用replace函数以避免包含撇号的名称出现问题。似乎这不起作用,因为当我运行页面时,输出只显示“O's Certifications”而不是“O'Brien's Certifications”。

我应该注意,对于任何名字中没有撇号的人来说,代码可以正常工作。

后端数据库是MS Access。

我对asp很新,所以非常感谢这里的任何帮助。

2 个答案:

答案 0 :(得分:2)

更安全,更好的方法是使用参数化查询。

请参阅:Parameterized query in Classic Asp

答案 1 :(得分:-1)

感谢您的提示,我会记住这些提示。我找到了解决方案。我很尴尬地说这是我的疏忽而且替换功能无法正常工作,因为原始页面中的表单没有传递完整的撇号名称。而不是“奥布莱恩”,只有“O”被传递。

我在表单上更改了问题,现在一切正常。