我已经编写了这段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>
答案 0 :(得分:4)
您有两种选择:
使用<cfoutput />
标记包裹vars输出行:
<cfoutput>#id#: <input type="text" value="#name#"></cfoutput>
使用<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 :(得分: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>
将为您提供从您的查询或任何变量或结构中回来的精美显示。