微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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之前)你所能做的只是从头到尾迭代它们,拉出你要找的东西.现在它就像一个嵌套的结构/数组数据结构,您可以以不同的方式使用它.

原文地址:https://www.jb51.cc/mssql/77969.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐