2012-11-13 35 views
3

我試圖從Coldfusion將變量提供給MySQL查詢。我的查詢目前包括:我可以在Coldfusion中使用帶有字符串列表的MySQL「IN」嗎?

<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> 

Session.app_ilns將號碼列表,像這樣:1111111111111,2222222222222 ....工作正常。 Howerver,Session.app_keys將字符串列表,如:

sample_1, sample_2, sample_3 

這將產生在我的腳本錯誤,因爲

unknown column "sample_1, sample_2, sample_3" in where clause. 

問題的:
是否有使用MySQL IN方式用字符串值列表還是需要預先循環變量以添加引號。有沒有其他的方法來完成這件事?

謝謝!

+0

我有[PHP示例](HTTP:/ /www.satya-weblog.com/2009/12/mysql-select-statement-where-something-exists-in-list.html)如何解決。尋找在我的MySQL查詢中使用的Coldfusion版本 – frequent

+1

哇。談論[déjàvu](http://stackoverflow.com/questions/11722181/can-i-queryparam-a-string-used-in-a-mysql-in-statement-using-coldfusion/11722299)。 –

+0

@ phantom42:啊....我知道這個問題聽起來很熟悉...... :-)謝謝。 – frequent

回答

13

list="yes"

嘗試使用cfqueryparam(很好的做法,無論如何)查看該Ben Nadel blog post

代碼是這樣:

AND art.marke IN (<cfqueryparam value="#Session.app_keys#" cfsqltype="cf_sql_varchar" list="yes" />) 
+0

是的,你擊敗了我的回答!謝謝! – frequent

+2

在CF中無縫使用列表的這種可能性是其最優秀的特性之一。 –

+0

是的,這真的很棒。實際上,我正在查看大量的代碼,現在我可以替換這些代碼... – frequent

2

明白了。我可以在cfqueryparam中設置list="true"。見here

相關問題