代码之家  ›  专栏  ›  技术社区  ›  Kip

如何在ColdFusion中通过查询获取cfloop中的动态属性名

  •  6
  • Kip  · 技术社区  · 14 年前

    我在A里面 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>
    
    1 回复  |  直到 11 年前
        1
  •  13
  •   Tomalak    14 年前
    <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)。

    在“array index”语法中明确提到它是必要的( query[col][row] )因为 query[col] 单独返回列对象(错误所指的“复杂类型”)。

    副作用:您可以将其用于在循环之外随机访问查询结果(即作为多维数组)。一旦知道感兴趣的行数,就可以直接访问这些行。

    推荐文章