如何在Coldfusion中动态构造查询输出变量?

fre*_*ent 1 variables coldfusion dynamic output

我试图循环一个包含我需要显示的列名的数组.用户可以定义自己的列,因此这将是动态列名列表

例如,列名可能是:

["style", "color", "size"]
Run Code Online (Sandbox Code Playgroud)

这些是我需要从我的查询中输出的列名称results.

我这样做:

<cfset variables.styleText = "">
<cfloop array="#DeserializeJSON(variables.raw.field_names)#" index="x">
   <cfset variables.styleText = variables.styleText & "#results." & x &"# ">
</cfloop>
<cfoutout>variables.styleText</cfoutput>
Run Code Online (Sandbox Code Playgroud)

但是,这给了我一个错误,因为我不能以结束变量名quot又名

 Diagnose: A CFML variable name cannot end with a &quot;.&quot; character. 
 The variable results. ends with a &quot;.&quot; character.  
 You must supply an additional structure key or delete the &quot;.&quot; character.
Run Code Online (Sandbox Code Playgroud)

问题:
任何人都可以给我一个提示results,在这种情况下,我需要如何修改它以输出查询中 的值#results.style# #results.color# #results.size#

谢谢!

Mat*_*che 6

代替

<cfloop array="#DeserializeJSON(variables.raw.field_names)#" index="x">
 <cfset variables.styleText = variables.styleText & "#results." & x &"# ">
</cfloop>
Run Code Online (Sandbox Code Playgroud)

你应该能做到的

<cfloop array="#DeserializeJSON(variables.raw.field_names)#" index="x">
 <cfset variables.styleText = variables.styleText & results[x][results.currentrow]>
</cfloop>
Run Code Online (Sandbox Code Playgroud)

或者,如果您只是简单地使用CF9或更高版本

<cfset variables.styleText&=results[x][results.currentrow]>
Run Code Online (Sandbox Code Playgroud)