我是参数化SQL的新手。我在.asp页面中有一个查询,它从表单中获取一个或多个客户端名称。它们保存在名为clientArr的数组中,然后作为参数传递给SQL Server。我正在逃避'as'',但这似乎并没有起作用。如果我使用 McDonald's 等客户端名称运行查询,则不会返回任何结果。
clientArr(y) = Replace(clientArr(y),"'","''"
...
if qsClient > "" Then
dim booComma
booComma = false
if mySQLwhere > "" Then
mySQLwhere = mySQLwhere& " AND "
End if
mySQLwhere = mySQLwhere & " (p.client IN ( "
for y = 0 to Ubound(clientArr)
if booComma = true Then
mySQLwhere = mySQLwhere & ","
end if
mySQLwhere = mySQLwhere & "?"
booComma = true
Next
mySQLwhere = mySQLwhere & ")) "
end if
...
if qsClient > "" Then
for y = 0 to Ubound(clientArr)
Response.write clientArr(y)
set prm = cmd.CreateParameter("@prm", 129, 1, 50, clientArr(y))
cmd.Parameters.Append prm
next
end if
如果我直接运行查询或通过连接字符串而不是使用参数来创建它,它可以正常工作。它也可以使用没有撇号的客户端名称。
非常感谢任何帮助。如果可以,很高兴提供更多信息。
谢谢, 添
答案 0 :(得分:1)
经过这么长时间的努力,它只是打击了我。像这样直接传递参数意味着我根本不需要逃避它。如果我删除了替换语句,它可以很好地保留单引号。我当然是在想这个。