У меня есть структура, в которой я хочу заменить ключ currentRow
на столбец cfquery 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
}
}
Мне интересно, почему первый код не может дать правильный вывод? Почему вторая версия с добавленной строкой работает нормально? Есть ли способ исправить или обойти эту проблему?