少し質問があります。理解できません。何が問題で、どうすれば解決できますか。たとえば、coldfusion 変数があります#account_code#
。まず、このコードは次のよう100.001.001
になります。もちろん)そして私はこの変数にいくつかの値を持っています、sum(nettotal)
そしてこれでグループ化されたcfqueryのように、#account_code#
私が望むのはこれらのコードのリストを設定することだけです。したがって、たとえば<cfset code_list='100.001.001,100.001.002'>
クエリでリストを定義します:account_code in (#code_list#)
私もこれを試しましaccount_code in ('#code_list#')
たが、代わりにエラーが発生し、「.001」付近の構文が正しくないと表示されます。私が理解している限り、これらのドットを何らかの形で置き換えて、ドットなしでコード ID を定義する必要があります。助けてくれてありがとう!本当に感謝しています!
1 に答える
3
あなたの質問が本当にSQL IN句をどのように正しく使用するのですか?
SQL IN 句は値のリストを受け取ります。これらの値が数値の場合は引用符で囲む必要はありませんが、コードは文字列であるため、各値を引用符で囲む必要があります。
select * from tbl
where id in ('100.001.001','100.001.002')
ColdFusion では、これを行う正しい方法は、list=true で <cfqueryparam> を使用することです。
<cfset code_list='100.001.001,100.001.002'>
<cfquery name="qSomething" ...>
select * from tbl
where id in (
<cfqueryparam list="true"
value="#code_list#"
cfsqltype="cf_sql_varchar" />
)
</cfquery>
これにより、リストがクエリ内の複数のパラメーターに変換され、code_list が実際にフォームまたは URL 変数によって渡されている場合、SQL インジェクション攻撃から保護するのに役立ちます。
于 2012-05-03T08:00:37.233 に答える