1

少し質問があります。理解できません。何が問題で、どうすれば解決できますか。たとえば、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 を定義する必要があります。助けてくれてありがとう!本当に感謝しています!

4

1 に答える 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 に答える