如何使用coldfusion或mssql将字符串中的单引号加倍(替换不起作用且不能使用cfparam)

时间:2015-07-24 07:46:22

标签: sql-server coldfusion

我收到了一个包含此内容的查询:

INNER JOIN
 com
ON
com.company_id = pi.company_id
AND com.company_name LIKE '%TUTTO PER L'UFFICIO%'

coldfusion显示此错误:

  

'UFFICIO'附近的语法不正确

我该如何解决这个问题?

P.S。不能使用cfparam,因为它不在查询中(位于&lt; cfsavecontent variable = "sql_query"> ... </cfsavecontent>

2 个答案:

答案 0 :(得分:3)

当您的SQL字符串在变量中时,为了减轻SQLi,CF将自动转义字符串中的任何单引号。这是正确的SQL语句,但如果您在SQL语句中也有硬编码的数据值(您不应该这样做!),很可能会导致您遇到的问题。

你真的应该从SQL语句中提取数据值,因为它们是错误的地方。

如果您无法或不愿意这样做,可以使用preserveSingleQuotes()功能解决此问题,例如:

<cfquery>
    #preserveSingleQuotes(sqlStatementString)#
</cfquery>

答案 1 :(得分:1)

您可以使用双引号来转义引号。

INNER JOIN
 com
ON
com.company_id = pi.company_id
AND com.company_name LIKE '%TUTTO PER L''UFFICIO%'