ColdFusion技术问题:如何正确输出Query查询中的数据
问题解决方案
问题原因
你当前的写法#query_name#.#colname#中,ColdFusion会将colname视为字面量列名,而非变量colname存储的实际列名,因此无法正确解析并输出对应列的数据,只会打印字符串query_name.colname。
修复方案
推荐使用数组式访问查询列的方式,这是ColdFusion中安全且高效的动态列访问方法:
修改后的代码
<cfloop query="#query_name#"> <tr class="tabledetail"> <cfloop array="#col_db_names#" index="colname"> <td valign="middle" class="detaildata" nowrap> #query_name[colname]# </td> </cfloop> </tr> </cfloop>
原理说明
在<cfloop query>循环内部,ColdFusion会自动绑定到当前行数据。使用query_name[colname]时,colname作为变量会被先解析为实际的列名,再从当前行中取出对应的值,从而实现动态列的输出。
不推荐的替代方案(存在安全风险)
如果你一定要使用点语法,可以借助evaluate()函数,但该函数存在代码注入风险,仅在col_db_names是完全可信的数据源时使用:
#evaluate("query_name.#colname#")#
内容的提问来源于stack exchange,提问作者Claus Spitzer
相关产品推荐
相关产品推荐

