Получение значения из 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].

Другие вопросы по тегам