我是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]返回柱对象(其是“复杂型”的错误是指)。

副作用:可以使用此对随机存取的循环的查询结果外(即,作为一个多维数组)。一旦你知道行数你有兴趣,你可以直接访问行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top