使用循环索引ColdFusion 9获取值

时间:2015-12-28 17:49:51

标签: coldfusion coldfusion-9

是否有可能在ColdFusion 9中使用循环索引获取参数的值。为了清楚起见,让我举个例子。

假设我们从html文本框中获取参数。有三个文本框,名为text_1,text_2,text_3。

所以不使用循环,没有问题。我们可以将值添加到DB,但是对于三个文本框,我们需要编写三个插入查询,如:

insert into #application.schema#.#application.table#
    (text_value)
    values
    (
    <cfqueryparam value="#attributes.props.text_1#" cfsqltype="cf_sql_varchar">
    )
insert into #application.schema#.#application.table#
    (text_value)
    values
    (
    <cfqueryparam value="#attributes.props.text_2#" cfsqltype="cf_sql_varchar">
    )
insert into #application.schema#.#application.table#
    (text_value)
    values
    (
    <cfqueryparam value="#attributes.props.text_3#" cfsqltype="cf_sql_varchar">
    )

我的问题是,使用循环是否有任何改变?类似的东西:

<cfloop from="1" to="3" index="i">
   <cfquery name="insertTextBoxes" datasource="#application.dsn#" timeout="30">
        insert into #application.schema#.#application.table#
        (text_value)
        values
        (
        <cfqueryparam value="#attributes.props.text_#i##" cfsqltype="cf_sql_varchar">
        )       
   </cfquery>
</cfloop>

我尝试了各种方法,但无法解决。我无法使用循环索引获取值。有什么建议吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

你不能像那样嵌套octothorpic值。要在CFM中连接,您需要将它们并排放置,或使用& concat运算符。

<cfqueryparam value="#attributes.props.text_##i#" cfsqltype="cf_sql_varchar">

无论其!以上是错的!因为#attributes.props.text_#不是真正的变量,所以会破坏。

你要做的最好的事情就是在属性对象上正确循环!

<cfloop collection="#attributes.props#" item="item">
    <cfquery name="insertTextBoxes" datasource="#application.dsn#" timeout="30">
        INSERT INTO #application.schema#.#application.table# (text_value)
        VALUES (
            <cfqueryparam value="#item#" cfsqltype="cf_sql_varchar">
        )       
   </cfquery>
</cfloop>

这种方式(我需要检查我的语法,但研究逻辑!)将避免这些讨厌的concat问题,并直接循环遍历这些属性属性漂亮而且整洁如。