如何CFLOOP在ColdFusion中查询获得一个动态的属性名称
-
24-09-2019 - |
题
我是cfloop
在查询内。我想获得一个属性,但我不知道该属性将是什么,直到运行时。使用#qryResult[MyAttr]#
失败,错误“复杂对象类型不能被转换为简单的值”。什么是这样做的语法?
下面是一个简化的示例:
<cfquery datasource="TestSource" name="qryResult">
SELECT * FROM MyTable
</cfquery>
<cfloop query="qryResult">
<cfset MyAttr="autoid" />
<cfoutput>
Test 1: #qryResult.autoid# <br/> <!--- succeeds --->
Test 2: #qryResult[MyAttr]# <br/> <!--- fails --->
</cfoutput>
</cfloop>
解决方案
<cfloop query="qryResult">
<cfset MyAttr="autoid" />
<cfoutput>
Test 1: #qryResult.autoid# <br/> <!--- succeeds --->
Test 2: #qryResult[MyAttr][qryResult.CurrentRow]# <br/> <!--- succeeds --->
</cfoutput>
</cfloop>
CurrentRow
是在文本语法(query.col
)隐含的。 (一个循环外使用时或1)它被绑定到<cfloop query="...">
/ <cfoutput query="...">
的索引。
提起它明确地处于“数组索引”语法(query[col][row]
)必要的,因为单独query[col]
返回柱对象(其是“复杂型”的错误是指)。
副作用:可以使用此对随机存取的循环的查询结果外(即,作为一个多维数组)。一旦你知道行数你有兴趣,你可以直接访问行。
不隶属于 StackOverflow