Ros*_*oeh 1 mysql coldfusion cfquery sql-like
我正在尝试使用此行构建动态sql语句
<cfset SQL = "SELECT url, MONTH(event_date) AS months, YEAR(event_date) AS year, event_date, title from events where title LIKE '%#form.event_name#%' ">
<cfquery name="results" >
#SQL#
</cfquery>
Run Code Online (Sandbox Code Playgroud)
似乎like子句有问题.有任何想法吗?我是否需要逃避%?
谢谢
在CFQUERY中,ColdFusion将#SQL#
自动用双引号替换单引号.
所以在理论上你必须像这样编写你的查询:
<cfquery name="results" >
#PreserveSingleQuotes(SQL)#
</cfquery>
Run Code Online (Sandbox Code Playgroud)
但是......接受表单变量并在查询中直接使用它而不进行进一步验证是非常危险的.看起来像是对我的SQL注入攻击的邀请.
我宁愿<cfqueryparam>
这样使用:
<cfquery name="results" >
SELECT url, MONTH(event_date) AS months, YEAR(event_date) AS year, event_date, title
from events
where title LIKE <cfqueryparam cfsqltype="cf_sql_varchar" value="%#form.event_name#%">
</cfquery>
Run Code Online (Sandbox Code Playgroud)