我正在使用带有参数化 SQL 查询字符串的经典 ASP,如下所示:
SQL = "SELECT * FROM content WHERE Category LIKE ? ORDER BY SubDate ?"
以下参数化代码中使用了 SQL 查询字符串:
Set cmd = Server.CreateObject("ADODB.Command")
Set rsView = Server.CreateObject("ADODB.Recordset")
cmd.ActiveConnection = MM_connContent_STRING
cmd.Prepared = true
cmd.CommandType = adCmdText
cmd.CommandText = SQL
cmd.CommandTimeout = 60
cmd.Parameters.Append(cmd.CreateParameter("Category", 202, adParamInput, 30, qFilter))
cmd.Parameters.Append(cmd.CreateParameter("SubDate", 202, adParamInput, 10, myDateSort))
rsView.CursorLocation = adUseClient
rsView.Open cmd, , adOpenForwardOnly, adLockReadOnly
上面的代码很好用,除了一个大问题。“按子日期排序?” 部分输出“ORDER BY SubDate 'DESC'”,其中 DESC 在其周围添加了单引号,因为它是一个参数。由于 DESC 周围的单引号(根据用户选择和通过 URL 查询字符串发送的内容,它也可以是 ASC)在运行上面的代码时出现错误的语法错误。似乎所有 SQL 参数都用单引号输出。如何从特定 SQL 参数中删除单引号,以免它们在 SQL 字符串中产生语法错误?