Получение значения из cfquery, когда столбец запроса является переменной
Я застрял... не могу вспомнить, как заставить это работать. Код:
<cfquery name = "getsomething>
select a, b, c
from d
where id = '1'
</cfquery>
<cfloop collection="#arguments#" item="argument">
<cfif #StructFind(arguments, argument)# neq #getsomething.argument[0]#><!--- here's the problem --->
do something
</cfif>
</cfloop>
Запрос возвращает одну запись; Мне нужно получить значения каждого столбца для этой записи. Имя столбца является переменной (аргумент). Какой синтаксис мне нужно заменить
#getsomething.argument[0]#
? Благодарю.
1 ответ
Вам нужно сделать пару настроек:
Я вижу, что вы зацикливаетесь, используя аргумент "collection". Это подразумевает, что у вас есть такая структура данных:
<cfset arguments = StructNew() />
<cfset arguments.a = 'x' />
<cfset arguments.b = 'y' />
<cfset arguments.c = 'c' />
Вы можете видеть, что значения не имеют значения в этом случае - важно то, что, используя аргумент "collection", вы работаете со структурой. Несколько неверно, но давайте двигаться дальше с предположением.
Вы не хотите, чтобы значение ваших аргументов оценивалось динамически, вы хотите, чтобы ключи - они отображались на ваши столбцы, поэтому выполните цикл следующим образом:
<cfloop list="#StructKeyList(arguments)#" index="argument">
тогда работает следующий код:
<cfif StructFind(arguments, argument) neq getsomething[argument][1]>
Обратите внимание, что в этом ответе я изменил ваш индекс запроса с 0 на 1: массивы cfquery основаны на 1, поэтому первая строка не [0], а [1].