sql – Coldfusion – 循环数据库查询结果时的变量字段名称

前端之家收集整理的这篇文章主要介绍了sql – Coldfusion – 循环数据库查询结果时的变量字段名称前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在表格中有一组列名称 – 例如foo1,foo2,foo3,foo4.我想通过循环动态引用这些列名:
<cfloop index="i" from="1" to="4">
  <cfset foo = Evaluate("query.foo" & i)>
</cfloop>

以上操作无效 – 即使query.foo1是对查询结果的有效引用,ColdFusion也会抛出“未定义的变量”错误.我怎么能这样做?

解决方法

不要对这样的事情使用Evaluate()!它很慢,should be avoided.
<cfloop index="i" from="1" to="4">
  <cfset foo = query["foo" & i][query.CurrentRow]>
</cfloop>

或者,如果你喜欢:

<cfloop index="i" from="1" to="4">
  <cfset foo = query["foo#i#"][query.CurrentRow]>
</cfloop>

Evaluate()用于评估代码位.不要将它用于可以通过语言集成,更合适的方式更优雅地解决的问题.

编辑:

使用“尖括号”-Syntax访问Query对象时,必须附加(从1开始的)行号索引(query [“foo#i#”] [RowNum]).使用传统的“dot”-Syntax(query.foo1)时,当前行是隐式的.

要显式访问当前行,请使用QueryObject.CurrentRow属性.但它可以是QueryObject.RecordCount之前的任何正整数.除了CurrentRow之外,建议进行范围检查.

这将打开一个有趣的领域:您可以开始使用“随机访问”查询对象.以前(在CFMX之前)你所能做的只是从头到尾迭代它们,拉出你要找的东西.现在它就像一个嵌套的结构/数组数据结构,您可以以不同的方式使用它.

猜你在找的MsSQL相关文章