我可以使用MySQL"IN"和Coldfusion中的字符串列表吗?

fre*_*ent 3 mysql string coldfusion select

我正在尝试将变量提供给MySQL查询Coldfusion.我的查询目前包括:

<cfif Session.app_assign EQ "0">
    AND art.iln IN ( #Session.app_ilns# )
<cfelseif Session.app_assign EQ "1">
    AND art.marke IN ( "#Session.app_keys#" )
</cfif>
Run Code Online (Sandbox Code Playgroud)

Session.app_ilns将是一个像这样的数字列表:1111111111111,2222222222222 ....这工作正常.Howerver,Session.app_keys将是字符串列表,如:

sample_1, sample_2, sample_3
Run Code Online (Sandbox Code Playgroud)

这会在我的脚本中产生错误,因为

unknown column "sample_1, sample_2, sample_3" in where clause.
Run Code Online (Sandbox Code Playgroud)

问题:
有没有办法将MySQL IN与字符串值列表一起使用,或者我是否需要预先循环变量以添加引号.有没有其他方法来完成这项工作?

谢谢!

fro*_*die 13

尝试使用cfqueryparam(无论如何) list="yes"

请参阅此Ben Nadel博客文章

代码看起来像:

AND art.marke IN ( <cfqueryparam value="#Session.app_keys#" cfsqltype="cf_sql_varchar" list="yes" />)
Run Code Online (Sandbox Code Playgroud)

  • 这种在CF中无缝使用列表的可能性是其最优秀的功能之一. (2认同)