我有任务在两个不同的表中更新/插入一些字段。在我运行更新之前,我必须从查询中获取值并将它们放在结构中,其中一个值应该是键。我的查询如下:
<cfquery name="getRecords" datasource="test">
Select
s.ID
,f.USER_ID
,s.USER_NUMBER
,s.STATUS
,f.DINING
From USERS s
Left Outer Join FIELDS f ON s.ID = f.USER_ID
</cfquery>
我需要USER_NUMBER作为我的结构中的键,并存储上述查询中的所有其他值。我将使用此结构来比较我的其他列表中的值,然后构建我将用于更新/插入的最终列表。我尝试过类似下面的代码,但它不起作用:
以下是使用手动查询的独立示例:
<cfset getRecords = queryNew("")>
<cfset queryAddColumn(getRecords, "ID", [1,2,3])>
<cfset queryAddColumn(getRecords, "USER_ID", ["userA","userB","userC"])>
<cfset queryAddColumn(getRecords, "STATUS", ["Active","Active","Active"])>
<cfset queryAddColumn(getRecords, "DINING", ["X","Y","Z"])>
<cfset myStruct = StructNew()>
<cfloop query="getRecords">
<cfset myStruct = [key:#USER_NUMBER#{
id:#ID#
,userid:##USER_ID
,status:#STATUS#
,dining:#DINING#
}]>
</cfloop>
如果有人可以帮助您使用此代码,请告知我们。我通常使用数组,但这次我必须使用struct,因为其他一些原因。谢谢。
答案 0 :(得分:3)
我相信你只需要将你的键移动到一个级别,这样循环就不会覆盖这些值。所以试试像:
<cfset myStruct = StructNew()>
<cfloop query="getRecords">
<cfset myStruct[getRecords.USER_ID] = {
id:getRecords.ID,
userid:getRecords.USER_ID,
status:getRecords.STATUS,
dining:getRecords.DINING
}>
</cfloop>
然后,要访问变量,您可以使用以下内容:
<cfoutput>#htmlEditFormat(myStruct[1].dining)#</cfoutput>