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

How to double singlequotes in a string using coldfusion or mssql (Replace not working and can't use cfparam)

我收到一个包含以下内容的查询:

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

coldfusion 显示此错误:

Incorrect syntax near 'UFFICIO'

我该如何解决这个问题?

P.S。不能使用 cfparam 因为这不在查询中(在 <cfsavecontent variable = "sql_query"> ... </cfsavecontent>

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

您确实应该从 SQL 语句中提取数据值,因为它们放错地方了。

如果您不能或不愿意正确地做到这一点,您可以使用 preserveSingleQuotes() 功能解决这个问题,例如:

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

您可以放置​​双单引号来转义引号。

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