变量cfform值 - 嵌套的英镑符号

时间:2012-08-31 14:59:59

标签: variables loops coldfusion nested

我遇到问题。我正在使用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>  

每次都会丢失一个错误。我尝试过使用数组格式,但我仍然无法使用它。请帮忙!

1 个答案:

答案 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注入攻击了。它还可以使查询更有效。