2012-02-01 56 views
0

我已经写了这段CF代码以获取并显示来自数据库的数据。 (实际上填充文本字段。)问题:我没有从查询中获取值,但我正确地获取记录数。如何在ColdFusion查询中显示每个元素

我该如何通过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> 
+0

除了你有任何其他问题,你在你的cfloop中缺少一个双引号(应该是'),并且在代码末尾有一个额外的''片段。 – ale 2012-02-01 13:48:06

+0

另外,除了你希望得到的东西外,知道你会得到什么会是有帮助的。 – ale 2012-02-01 13:49:22

回答

4

你有两个选择:

  1. 总结与<cfoutput />标签瓦尔输出线:

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

  2. 使用<cfoutput query="data_query">循环,而不是<cfloop ...>

为了更清晰的代码的缘故,我宁愿第二个选项,以便您的代码如下:

<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

在整个你的逻辑是很好..只有几个错别字,需要细微的变化..

试试这个。

<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

你也应该正常“范围”输出时,您的查询列。这将使您的代码在将来更容易维护,例如你总是会知道#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> 
1

如果你不知道它没有:

<cfdump var="#data_query#"> 

OR

<cfdump var="#data_query#" abort> 

会给你一个漂亮的显示器回来从你的查询,或以任何变量或结构体。

+1

这是一个比答案更多的评论。 – ale 2012-02-01 15:38:53