要点:
问题是当我在字段名称的末尾添加“ _#i#”时!
详情:
我有一个可变数量的表单字段,需要同时插入数据库,不同的行。
所以我循环了表单并增加了字段的名称。
所以我有title_1,title_2,title_3等......
接下来我想通过循环插入表单字段的数量将它们插入数据库(一个提交按钮)。
我正在使用 ColdFusion Server Standard 8,0,1,195765
错误: 无效的CFML构造
我尝试了各种各样的方法 - 我们非常感谢任何建议。
<cfoutput>
<cfloop from="1" to ="#VARIABLES.fieldTotal#" index="i">
<cfset VARIABLES.insert = theObj.the_insert(
the_id = FORM.the_id_#i#
, title = FORM.title_#i#
, author = FORM.author_#i#
, caption = FORM.caption_#i#
)>
</cfloop>
</cfoutput>
答案 0 :(得分:12)
form[ "the_id_#i#" ]
所有ColdFusion范围都是结构,可以通过这种方式访问。
答案 1 :(得分:3)
Sam Farmer已经给出了正确的答案,但只是为了澄清访问struct成员的工作原理:
FORM.var
等于FORM["var"]
使用点访问不会被评估。无论何时想要动态访问结构中的成员,都需要使用方括号。
FORM["the_id_#i#"]
等于FORM["the_id_" & i]
。
请记住清理用户输入(尤其是GET / URL和POST / FORM数据):
<cfloop from="1" to="#VARIABLES.fieldTotal#" index="i">
<cfif structKeyExists(FORM, "the_id_" & i) and reFind("^[0-9]+$", FORM["the_id_" & i])
and structKeyExists(FORM, "title_" & i)
and structKeyExists(FORM, "author_" & i)
and structKeyExists(FORM, "caption_" & i)>
<cfset VARIABLES.insert = theObj.the_insert(
the_id = FORM["the_id_" & i],
title = FORM["title_" & i],
author = FORM["author_" & i],
caption = FORM["caption_" & i]
)>
</cfif>
</cfloop>
structKeyExists(FORM, "the_id_" & i)
等于isDefined("FORM.the_id_#i#")
。