我遇到问题。我正在使用cfoutput在表单中运行查询的结果。有几个动态命名的cfselects,即entry_1,entry_2等。然后将这些cfselects传递给url中的记录计数的动作页面,我想将它们插入到带有cfloop的数据库中。
<cfloop from="1" to="#url.Count#" index="i">
<cfquery name="id_#i#" datasource="xxx">Insert Into table1(entry_level) Values(#form.entry_#i##)</cfquery>
</cfloop>
每次都会丢失一个错误。我尝试过使用数组格式,但我仍然无法使用它。请帮忙!
答案 0 :(得分:10)
您不能以这种方式构造动态结构选择器。您可以执行以下操作以获得相同的结果。
所以,使用以下数据:
<cfset url.count = 3>
<cfset form.entry_1 = 1>
<cfset form.entry_2 = 2>
<cfset form.entry_3 = 3>
这样的事情会起作用 -
<cfloop from="1" to="#url.Count#" index="i">
<cfquery name="id_#i#" datasource="xxx">
Insert Into table1(entry_level) Values(#form['entry_' & i]#)
</cfquery>
</cfloop>
ColdFusion基本上为您提供了两种方法来访问结构的值,通过a。符号或通过括号。如果您尝试通过动态密钥访问结构,则必须使用括号。
顺便说一句,稍微好一点的是:
<cfloop from="1" to="#url.Count#" index="i">
<cfquery name="id_#i#" datasource="xxx">
Insert Into table1(entry_level) Values(<cfqueryparam value="#form['entry_' & i]#">)
</cfquery>
</cfloop>
cfQueryParam自动转义条目,这样您就不必担心SQL注入攻击了。它还可以使查询更有效。