2015-05-20 36 views
2

我試圖使用form.elementName + countingVariable訪問cfquery標記中的各個表單元素。有人能告訴我什麼語法是正確做到這一點。使用coldfusion計數變量連接表單元素名稱

<form> 
<select name="SetID0"> 
<option></option> 
... 
</select> 
</form> 

<cfquery> 
<cfqueryparam value="#"form.SetID & #i#"#" CFSQLType="CF_SQL_CHAR">, 
</cfquery> 

我知道有可能是這樣做像創建一個列表的更好的方法,我開放給那些建議,但我想知道如果我想要現在做是可能的。

+1

你能解釋一下你的_creating意味着什麼list_?你想在你的SQL中運行一個IN嗎? –

+1

忽略語法錯誤,上面是創建一個文字字符串,即「form.SetID0」,「form.SetID1」等等,而不是獲得這些字段的*值*。 「FORM」是一個結構。要動態訪問其中一個值,您需要使用關聯數組表示法,即'FORM [「keyName」]'或FORM [「SetID」&i]'。只要看報價。附註 - 這是否最終是INSERT或UPDATE查詢的一部分? – Leigh

回答

3

你大多有

<cfqueryparam cfsqltype="cf_sql_char" value="#form['setID' & i]#"> 
+0

如果您正在嘗試執行WHERE someColumn IN(list),那麼您將執行,其中所有輸入都相同「setID」的名稱而不是「setID#x#」。 –

+1

我懷疑你有一個語法錯誤,@Matt?你的語法是否工作,或者它應該是'#form ['setId'&i]#'? 'form.setId&i'會對這兩個變量的值(不是前者的名稱和後者的值)進行字符串連接,是不是? –

+0

你是對的@AdamCameron我已經修復了答案。 –

0

首先改變的下拉菜單

<form> 
<select name="SetID" multiple> 
    <option></option> 
    ... 
</select> 
</form> 

有UI部件,使這種類型的下拉菜單的很乾淨。考慮選擇二

然後更改查詢

<cfquery> 
    fieldname IN (
    <cfqueryparam value="#form.SetID#" CFSQLType="CF_SQL_CHAR" list="yes"> 
    ) 
</cfquery> 
+0

就我個人而言,我發現多個選擇非常令人沮喪地與用戶一起工作。因此,我只在被迫時才使用它們。 –