我正在尝试创建一个函数来从查询中创建 csv 文件。运行查询后,我将遍历它并将每一行的字段附加到 StringBuffer 对象。为此,我将列名放入一个数组中:
<cfset indexes = #ListToArray(Arguments.header)# />
其中参数当前是一个字符串,如:
"col1, col2, col3...."
我已经通过转储验证了查询和数组都应该是什么。循环查询结果时出现问题。鉴于:
<cfset indexes_length = #ArrayLen(indexes)# />
<cfloop query="query_for_csv">
<cfloop index="i" from="1" to="#indexes_length#">
<cfset attr = #indexes[i]# />
<cfset sbOutput.Append(
"#query_for_csv[attr][query_for_csv.CurrentRow]#") />
</cfloop>
</cfloop>
在收到错误消息之前,仅输出第一行的第一个值:
[Table (rows 10 columns col1, col2, col3):
[col1: coldfusion.sql.QueryColumn@6f731eba]
[col2: coldfusion.sql.QueryColumn@6ee67e7f]
[col3: coldfusion.sql.QueryColumn@5c6647cb]
is not indexable by col2
如果我用文字“col2”替换变量#attr#:
#query_for_csv['col2'][query_for_csv.CurrentRow]#
然后循环顺利通过,并吐出由“col2”索引的所有值。有任何想法吗?