是否有可能在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>
我尝试了各种方法,但无法解决。我无法使用循环索引获取值。有什么建议吗?
谢谢!
答案 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问题,并直接循环遍历这些属性属性漂亮而且整洁如。