1

我不确定这是否可能。我可以连接两个代表变量名称的字符串,然后从中读取变量值吗?例如:

<cfloop index="person" from="0" to="#numberAuthorized - 1#">
  //USING 'thePerson' DIDN'T WORK EITHER
  <cfset thePerson = 'authorized_name' & person>
  <cfquery name="qAddAuthorizedPeople" datasource="#thedb#" blockfactor="100">
    INSERT INTO people (requestid, fullname)
    VALUES ('#requestid#', '#authorized_name & 1#')
  </cfquery>
</cfloop>

我需要阅读的变量是authorized_name0, authrozied_name1, etc.. 所以我正在循环,所以我可以增加一个索引并将其附加到变量名的末尾。然后像这样插入我的数据库。显然,这是行不通的。我之前也尝试过连接并将其设置为变量(thePerson)并放入#thePerson#查询中,但这也不起作用。我有什么办法可以做到这一点?

4

2 回答 2

5

编辑我不确定你是如何传递这些变量的。但是说它们在FORM范围内...... FORM 也是一个结构。对于任何结构,您都可以使用关联数组表示法动态访问键。(另外,请确保正确确定变量的范围。)

<cfloop from="0" to="#numberAuthorized - 1#" index="counter">
  <!--- extract value of authorized_name0, authorized_name1, ... --->
  <cfset variables.fullName = FORM["authorized_name"& counter]>

  <cfquery name="qAddAuthorizedPeople" datasource="#thedb#" blockfactor="100">
    INSERT INTO people (requestid, fullname)
    VALUES (
      <cfqueryparam value="#requestid#" cfsqltype="cf_sql_varchar">
      , <cfqueryparam value="#variables.fullName#" cfsqltype="cf_sql_varchar">
    )
  </cfquery>
</cfloop>
于 2012-09-20T18:33:00.203 回答
0

如果您从查询中获取名称列表,那么您将如何循环并将它们添加到 INSERT 到数据库中:

<cfloop from="1" to="#structCount(numberAuthorized)#" index="person">
    <cfquery name="qAddAuthorizedPeople" datasource="#thedb#" blockfactor="100">
    INSERT INTO people (requestid, fullname)
    VALUES ('#requestid#', '#numberAuthorized["authorized_name"][person]#')
    </cfquery>
</cfloop>

在上面的示例中,“authorized_name”假定为您从中获取名称的表或结构的列的名称。这可以很容易地来自某种结构。

如果这是传入的表单结构的名称,我将范围更改为使用 structCount(numberAuthorized)。如果表单名称的每个名称的末尾都附加了值,例如“authorized_name_0”和“authorized_name_1”,那么在在每次插入之前设置这些变量的代码,这样就很清楚你在做什么。例子:

<cfloop from="1" to="#structCount(numberAuthorized)#" index="person">
  <cfset counter = counter + 1>
  <cfset newFullname = numberAuthorized["authorized_name_" & counter]>
  <cfquery name="qAddAuthorizedPeople" datasource="#thedb#" blockfactor="100">
  INSERT INTO people (requestid, fullname)
  VALUES ('#requestid#', '#numberAuthorized["authorized_name"][person]#')
  </cfquery>
</cfloop> 

目前尚不清楚您是在使用结构还是在使用什么,因此语法需要根据它进行更改。从这个角度考虑上面更多的伪代码。

于 2012-09-20T18:13:30.217 回答