Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Coldfusion—循环数据库查询结果时的变量字段名_Sql_Variables_Coldfusion - Fatal编程技术网

Sql Coldfusion—循环数据库查询结果时的变量字段名

Sql Coldfusion—循环数据库查询结果时的变量字段名,sql,variables,coldfusion,Sql,Variables,Coldfusion,我在一个表中有一组列名,例如foo1、foo2、foo3、foo4。我希望通过循环动态引用这些列名: <cfloop index="i" from="1" to="4"> <cfset foo = Evaluate("query.foo" & i)> </cfloop> 上述操作不起作用-ColdFusion抛出“变量未定义”错误,即使query.foo1是对查询结果的有效引用。我还能怎么做呢?你很接近了。试试这个: <cfset qu

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

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


上述操作不起作用-ColdFusion抛出“变量未定义”错误,即使query.foo1是对查询结果的有效引用。我还能怎么做呢?

你很接近了。试试这个:

<cfset query.foo1 = "foo val 1">
<cfset query.foo2 = "foo val 2">
<cfset query.foo3 = "foo val 3">
<cfset query.foo4 = "foo val 4">

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

#foo#
不要用
Evaluate()
来做类似的事情!它又慢又慢


或者,如果您愿意:

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

Evaluate()
用于计算代码位。不要将它用于那些可以用语言集成的、更合适的方式更优雅地解决的事情

编辑:

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

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


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

我知道Evaluate()传统上(即直到CF5)用于此类内容,但由于CF6,它是不必要的,通常不推荐使用。甚至Macromedia/Adobe也不鼓励使用它:太棒了,我没有意识到这一点。谢谢。不幸的是,这两个work-ColdFusion都没有告诉我“值foo1不能转换成数字。”哦,我明白了。等等,关于如何使用尖括号语法处理查询行,有一个小技巧。我在你链接的文档中没有看到这个-有什么建议吗?这个链接对我很有用。CF文档传统上加载有点慢,我认为您需要使用JavaScript。奇怪的是,即使添加了[query.currentrow]语法,我仍然得到“无法转换为数字错误”。
<cfloop index="i" from="1" to="4">
  <cfset foo = query["foo#i#"][query.CurrentRow]>
</cfloop>