4

我遇到了问题。我正在使用 cfoutput 在表单中运行查询结果。有一些动态命名的cfselect,即entry_1、entry_2 等。然后将它们与url 中的记录计数一起传递到actionpage,我想将它们插入到带有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>  

而且每次都会抛出错误。我试过使用数组格式,但我仍然无法让它工作。请帮忙!

4

1 回答 1

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 基本上为您提供了两种访问结构值的方法,或者通过 . 符号或通过括号。如果您尝试通过动态键访问结构,则必须使用方括号。

顺便说一句,稍微好一点的是:

   <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 注入攻击。它还可以使查询稍微更有效率。

于 2012-08-31T15:09:26.760 回答