加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 06:43:46 所属栏目:MsSql教程 来源:网络整理
导读:我在表格中有一组列名称 – 例如foo1,foo2,foo3,foo4.我想通过循环动态引用这些列名: cfloop index="i" from="1" to="4" cfset foo = Evaluate("query.foo" i)/cfloop 以上操作无效 – 即使query.foo1是对查询结果的有效引用,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之前)你所能做的只是从头到尾迭代它们,拉出你要找的东西.现在它就像一个嵌套的结构/数组数据结构,您可以以不同的方式使用它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读