我在一个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
)。它与索引相关<cfloop query="...">
/<cfoutput query="...">
(或在循环外使用时为 1)。
在“数组索引”语法中明确提及它是必要的(query[col][row]
), 因为query[col]
单独返回列对象(这是错误引用的“复杂类型”)。
副作用:您可以使用它来随机访问循环之外的查询结果(即作为多维数组)。一旦知道您感兴趣的行数,您就可以直接访问这些行。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)