ColdFusion遍历查询结果时如何动态引用列名
解决方案
你遇到的报错是因为直接用点语法时,ColdFusion会把后面的DescriptionVariable直接识别为固定列名,而不会解析这个变量存储的动态列名字符串,可通过以下两种方法实现动态列取值:
方式1:方括号取值法(推荐)
如果你的查询结果只有1行(按你给出的WHERE条件,按JobID+SkillID过滤后大概率是单条结果),直接用如下写法:
<cfset DescriptionVariable = JobTitle & JobLevelIndex & 'Description'> <cfoutput> #getCapabilityAndDescription[DescriptionVariable][1]# </cfoutput>
方括号会先解析DescriptionVariable变量里存储的实际列名(比如你举例的Baker3Description),后面的[1]代表取查询结果的第1行数据,如果是循环遍历多行查询结果,把1替换为对应的行号变量即可。
方式2:evaluate函数(兼容旧版本CF)
如果是不支持方括号语法的老旧ColdFusion版本,可以用evaluate函数实现,该方法性能稍差,优先选择方式1:
<cfset DescriptionVariable = JobTitle & JobLevelIndex & 'Description'> <cfoutput> #evaluate("getCapabilityAndDescription.#DescriptionVariable#")# </cfoutput>
多行查询遍历示例
如果你需要遍历整个查询结果的所有行,可直接使用查询自带的currentRow变量获取当前行号:
<cfloop query="getCapabilityAndDescription"> <cfset DescriptionVariable = JobTitle & JobLevelIndex & 'Description'> <cfoutput> #getCapabilityAndDescription[DescriptionVariable][currentRow]# </cfoutput> </cfloop>
内容的提问来源于stack exchange,提问作者TRose
相关产品推荐
相关产品推荐

