如何在ColdFusion查询中显示每个元素

时间:2012-02-01 10:20:46

标签: coldfusion coldfusion-9

我已经编写了这段CF代码来获取和显示数据库中的数据。 (实际上填充文本字段。)问题:我没有从查询中获取值,但我正确获取记录数。

我应该如何通过cfloop访问查询返回的值?以下是我的工作。

<cfquery name="data_query" datasource="#dsn#">
  SELECT 
    id,
    name
  FROM learning
</cfquery> 


<cfloop query=data_query">
  <li>
    <div class="list_div clearfix">
      <input type="text" value="#URLDecode(name)#">
    </div>
  </li>
</cfloop>
</cfquery>

4 个答案:

答案 0 :(得分:4)

您有两种选择:

  1. 使用<cfoutput />标记包裹vars输出行:

    <cfoutput>#id#: <input type="text" value="#name#"></cfoutput>

  2. 使用<cfoutput query="data_query">循环代替<cfloop ...>

  3. 为了更清晰的代码,我更喜欢第二个选项,所以你的代码是:

    <cfquery name="data_query" datasource="#dsn#">
        SELECT 
            id,
            name
        FROM learning
    </cfquery> 
    
    <cfoutput query="data_query">
        <li>
            <div class="list_div clearfix">
                #id#: <input type="text" value="#name#">
            </div>
        </li>
    </cfoutput>
    

答案 1 :(得分:3)

此外,您应该在输出时正确“确定”查询列的范围。这将使您的代码在将来更容易维护,例如你总是知道#data_query.name#属于查询,并不是某些其他代码设置的字符串。它会加快页面性能 - 如果你没有范围变量(这适用于所有类型的变量,而不仅仅是查询),那么CF将循环遍历不同的范围,直到找到具有此值的内容。因此,通过范围界定,可以防止CF必须循环。

<cfquery name="data_query" datasource="#variables.dsn#">
    SELECT 
        id,
        name
    FROM learning
</cfquery> 

<cfoutput query="data_query">
    <li>
        <div class="list_div clearfix">
            #data_query.id#: <input type="text" value="#data_query.name#">
        </div>
    </li>
</cfoutput>

答案 2 :(得分:1)

总的来说,你的逻辑很好..只需要一些拼写错误和需要进行的小改动......

试一试。

<cfquery name="data_query" datasource="#dsn#">
    SELECT 
        id,
        name
    FROM learning
</cfquery> 

<cfloop query="data_query">
    <li>
        <div class="list_div clearfix">
            #id#: <input type="text" value="#name#">
        </div>
    </li>
</cfloop>

答案 3 :(得分:1)

如果你不知道的话:

<cfdump var="#data_query#">

OR

<cfdump var="#data_query#" abort>

将为您提供从您的查询或任何变量或结构中回来的精美显示。