<%
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很新,所以非常感谢这里的任何帮助。
答案 0 :(得分:2)
更安全,更好的方法是使用参数化查询。
答案 1 :(得分:-1)
感谢您的提示,我会记住这些提示。我找到了解决方案。我很尴尬地说这是我的疏忽而且替换功能无法正常工作,因为原始页面中的表单没有传递完整的撇号名称。而不是“奥布莱恩”,只有“O”被传递。
我在表单上更改了问题,现在一切正常。