我不确定这是否可行。我可以连接两个表示变量名的字符串,然后从中读取变量值吗?例如:
<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#
放入查询中,但这也无效。我能以任何方式做到这一点吗?
答案 0 :(得分: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>
答案 1 :(得分: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),如果这是表单struct的名称。如果表单名称的值附加到每个名称的末尾,如“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>
目前还不清楚你是在使用结构还是什么,所以语法需要根据它来改变。从这个角度考虑上面的更多伪代码。