gpt4 book ai didi

sql - Coldfusion - 循环访问数据库查询结果时的可变字段名称

转载 作者:行者123 更新时间:2023-12-04 09:29:45 27 4
gpt4 key购买 nike

我在表中有一组列名 - 例如foo1、foo2、foo3、foo4。我想通过循环动态引用这些列名:

<cfloop index="i" from="1" to="4">
<cfset foo = Evaluate("query.foo" & i)>
</cfloop>

以上不起作用 - ColdFusion 会抛出“ undefined variable ”错误,即使 query.foo1 是对查询结果的有效引用。我还能怎么做?

最佳答案

不要使用 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()用于评估代码位。不要将它用于可以通过语言集成、更合适的方式更优雅地解决的事情。

编辑:

使用“尖括号”语法访问 Query 对象时,必须附加(基于 1 的)行号索引 ( query["foo#i#"][RowNum] )。使用传统的“点”语法( query.foo1 )时,当前行是隐式的。

要显式访问当前行,请使用 QueryObject.CurrentRow属性(property)。但它可以是任何正整数,直到 QueryObject.RecordCount .建议对除 CurrentRow 以外的任何内容进行范围检查。 .

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

关于sql - Coldfusion - 循环访问数据库查询结果时的可变字段名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1064305/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com