gpt4 book ai didi

coldfusion - 尝试输出查询值时出现复杂对象错误

转载 作者:行者123 更新时间:2023-12-03 11:19:45 26 4
gpt4 key购买 nike

我的目标是只输出“fieldList”中指定的列数据。

得到以下错误:

Complex object types cannot be converted to simple values. The expression has requested a variable or an intermediate expression result as a simple value, however, the result cannot be converted to a simple value. Simple values are strings, numbers, boolean values, and date/time values. Queries, arrays, and COM objects are examples of complex values. The most likely cause of the error is that you are trying to use a complex value as a simple one. For example, you might be trying to use a query variable in a cfif tag. The error occurred on line 20.



尝试执行以下操作时:
<cfquery datasource="retailers" name="myQuery">
Select * FROM retailer
WHERE retailer_id = '#url.id#'
</cfquery>

<cfset fieldList = "company,phone,phone_secondary,fax,email,website">
<cfloop list="#fieldList#" index="i">
#myQuery[i]#
</cfloop>

这不应该在不给我错误的情况下工作吗?我觉得我只是忽略了一些简单的事情,我在任何地方都找不到答案。

最佳答案

好的,我看到你修改了你的初始代码,所以这是我的回应:

您正在遍历一个列列表,并尝试评估每一列,就好像它是结构中的单个元素一样。

但是,查询略有不同:它作为一系列结构进行访问,而这些结构又是从查询返回的每行数据的数组。

如果您想输出所有数据行,而无需预先知道列(或如您在上面的代码中所暗示的那样动态传递它们),请尝试以下操作:

<cfoutput query="myQuery">
<cfloop list="#myQuery.ColumnList#" index="thisColumn">
#myQuery[thisColumn][myQuery.CurrentRow]#
</cfloop>
</cfoutput>

这将为您提供所需的输出。带有查询属性的外部 cfoutput 将遍历您收到的所有数据行。然后,对于每一行,您遍历查询生成的列列表,并为每一列输出数据,通过 myQuery.CurrentRow 指定行,它通过外部输出自动为您迭代。

我现在还花点时间提倡您尽量远离循环中的循环,而只是明确地输出您的值:
<cfoutput query="myQuery">
#company# #phone#
</cfoutput>

在循环中使用这种语法比前面提到的循环稍微便宜一些。

关于coldfusion - 尝试输出查询值时出现复杂对象错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9626417/

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