gpt4 book ai didi

struct - 如何在带有 cfquery 列的结构中设置动态键名?

转载 作者:行者123 更新时间:2023-12-04 22:27:31 24 4
gpt4 key购买 nike

我有一个结构,我想用 cfquery 列 currentRow 替换 recID 键。此列是在 sql 表中自动递增的整数。出于某种原因,我的代码无法创建具有唯一键的结构。这是我的代码:

<cfquery name="qryAccounts" datasource="myDB">
SELECT RecID, FirstName, LastName
FROM Accounts WITH (NOLOCK)
</cfquery>

<cfloop query="qryAccounts">
<cfset fnAccounts[RecID] = StructNew()>
<cfset fnAccounts[RecID].RecordID = RecID>
<cfset fnAccounts[RecID].FirstName = FirstName>
<cfset fnAccounts[RecID].LastName = LastName>
</cfloop>

上面的代码产生了这个结果:
[
{
"FIRSTNAME": "Mike",
"LASTNAME": "Richards",
"RECORDID": 1
},
null,
null,
null,
{
"FIRSTNAME": "John",
"LASTNAME": "Matt",
"RECORDID": 6
}
]

然后我尝试这样做:
<cfquery name="qryAccounts" datasource="myDB">
SELECT RecID, FirstName, LastName
FROM Accounts WITH (NOLOCK)
</cfquery>

<cfloop query="qryAccounts">
<cfset fnAccounts["ID"&RecID] = StructNew()>
<cfset fnAccounts["ID"&RecID].RecordID = RecID>
<cfset fnAccounts["ID"&RecID].FirstName = FirstName>
<cfset fnAccounts["ID"&RecID].LastName = LastName>
</cfloop>

上面的代码产生了正确的输出:
{
"ID1": {
"FIRSTNAME": "Mike",
"LASTNAME": "Richards",
"RECORDID": 1
},
"ID6": {
"FIRSTNAME": "John",
"LASTNAME": "Matt",
"RECORDID": 6
}
}

我想知道为什么第一个代码无法产生正确的输出?为什么带有附加字符串的第二个版本工作正常?有没有办法解决或解决这个问题?

最佳答案

您需要做的就是将变量 fnAccounts 定义为一个结构体。

<cfset fnAccounts = {}>

没有定义,CF 可以自由选择任何它看起来合适的东西。
<cfquery name="qryAccounts" datasource="myDB">
SELECT RecID, FirstName, LastName
FROM Accounts WITH (NOLOCK)
</cfquery>

<cfset fnAccounts = {}>
<cfloop query="qryAccounts">
<cfset fnAccounts[RecID] = StructNew()>
<cfset fnAccounts[RecID].RecordID = RecID>
<cfset fnAccounts[RecID].FirstName = FirstName>
<cfset fnAccounts[RecID].LastName = LastName>
</cfloop>

由于您尝试使用 RecID 作为整数值键,因此它类似于我们访问数组的方式( fnAccounts[1] 数组中的第一个位置)。将 fnAccounts 定义为结构后,ColdFusion 可以将变量视为结构。

DEMO

关于struct - 如何在带有 cfquery 列的结构中设置动态键名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50375950/

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