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

Mea*_*n73 4 variables coldfusion loops nested

我遇到了问题.我正在使用cfoutput在表单中运行查询的结果.有一些动态命名的cfselects,即entry_1,entry_2等.然后将这些命令传递给一个动作页面,其中包含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>  
Run Code Online (Sandbox Code Playgroud)

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

Bri*_*ver 10

您不能以这种方式构造动态结构选择器.您可以执行以下操作以获得相同的结果.

所以,使用以下数据:

<cfset url.count = 3>
<cfset form.entry_1 = 1>
<cfset form.entry_2 = 2>
<cfset form.entry_3 = 3>
Run Code Online (Sandbox Code Playgroud)

像这样的东西会起作用 -

<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>  
Run Code Online (Sandbox Code Playgroud)

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>  
Run Code Online (Sandbox Code Playgroud)

cfQueryParam自动转义条目,这样您就不必担心SQL注入攻击.它还可以使查询更有效.