Редактировать: ВОПРОС - это дубликат, но ОТВЕТ не является!ColdFusion - Вложенная переменная (чтение динамической переменной)
У меня есть следующий код:
<cfquery name="contact" datasource="thesource">
SELECT * FROM #table# WHERE foo = '#bar#'
</cfquery>
, а затем позже (это часть проблемы):
<cfloop from="0" to="9" index="i">
<cfset thisvar = Evaluate("contact.check" & i) />
<cfoutput>
#thisvar#
</cfoutput>
</cfloop>
При исполнении, он бросает хороший большой «Variable contact.check0 является Не определено». Однако, #contact.check0#
будет выводить только штраф, если он жестко закодирован.
Любые идеи о том, как исправить это?
Примечание: Я видел Coldfusion - variable field name when looping through database query results, и, несмотря на то, что проблема, похоже, точно такая же, решения не работают. В соответствии с комментариями, я также получаю ошибку «невозможно преобразовать в число». Я замечаю, что Томалак упоминает «немного поймать», но никогда не говорит, что это такое. В статье, в которой он ссылается, я пробовал каждую синтаксически эквивалентную форму, и все это выдает ошибку ... либо не может преобразовать в число, либо не определен.
Кроме того, я знаю, что Evaluate()
имеет накладные расходы и «не должен использоваться». Я возьму любое решение, которое работает, независимо от того, имеет ли он в нем оценку или нет.
Это на ColdFusion 9.
Спасибо
Edit: в то время как подобный вопрос уже был ответ, этот вопрос был другой причиной. См. Принятый ответ ниже.
Правильный ответ в указанной вами ссылке должен работать. Каков был ваш код, который вызвал ошибку «невозможно преобразовать в число». –
Согласен, код в этом ответе будет работать нормально, если ваш запрос содержит имена столбцов «check0, ... check9». * RE: Я замечаю, что Томалак упоминает «немного поймать», но никогда не говорит, что это такое * Да, он это сделал. Это редактирование, где он говорит: «При доступе к объектам Query с помощью« угловой скобки »-syntax вы должны добавить индекс номера строки (на основе 1), то есть' queryName ["columnName"] [rowNumber] '. – Leigh
У вас есть столбец в запросе с именем «check0»? –