我收到了一个包含此内容的查询:
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>
)
答案 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%'