2012-10-16 3 views
2

동적으로 생성 된 쿼리 이름을 ColdFusion에 포함시킬 수 있습니까? 내가 뭘하려고 오전

<cfloop array="#LOCAL.someArray" index="LOCAL.aString"> 

    <cfset LOCAL.queryName = "uniqueQueryName_" & LOCAL.aString /> 

    <cfquery name="#LOCAL.queryName#" datasource="db" cachedwithin="#CreateTimeSpan(1,0,0,0)#"> 
     SELECT count(*) AS c FROM someTable 
    </cfquery> 

    <cfdump var="#LOCAL.queryName#" /> 
</cfloop> 

이 가능하다, 또는 그것을 할 수있는 더 좋은 방법은 무엇입니까?

편집

<cfloop query="LOCAL.queryName">와 함께 작동하지만 내가 <cfset ArrayAppend(LOCAL.returnArray, LOCAL.queryName.c) />

+1

시도 하시겠습니까? 오류가 있습니까? –

+0

''을 실행하면 'uniqueQueryName_foo','uniqueQueryName_bar' 등의 문자열 값을 출력합니다. – John

+4

쿼리 행을 동적으로 액세스하려면 연관 배열 표기법 즉'Local [ "nameOfQuery"] [ " theColumnName "] [rowNumber]' – Leigh

답변

10

이렇게하려면 evaluate()을 사용할 필요가 없으며, 그렇게해서는 안됩니다. (그래서 나는 그 답변을 미안합니다.)

하나가 쿼리의 열을 액세스하려는 경우
<cfdump var="#local[qname]#"> 

, 그것의 :

#local[qname][columnName]# 

그리고 특정 셀 :

당신이해야 할 모든 연관 배열 표기법을 사용하다

#local[qname][columnName][rowNumber]# 

evaluate()이 정답 인 상황은 거의 없습니다. 무엇이든. 불행히도 - 매우 숙련 된 ColdFusion 개발자가 작성한 것이 아니기 때문에 Adobe 문서에 의존 할 수 없습니다.

+0

실제로 테스트 해 보셨습니까? 내가 사용하는 파운드 기호의 조합에 관계없이 그 방법은 단지''으로 작동하도록 할 수 있습니다. 이것은별로 유용하지 않습니다. – John

+1

@johnthexiii - 잘 작동합니다. 나는 원래의 코드가 쿼리를'local'이 아닌'variables' 범위에 넣는 것이 문제라고 생각합니다. 귀하의 질의 선언은 다음과 같아야합니다 :'' – Leigh

+1

그것은 복사 & 붙여 넣기이고 제안 코드가 아닙니다 : 그것은 구문을 증명하는 것일뿐입니다. , 그것은 작동합니다). 나는 당신이 당신의 초기 예제에 따라 당신의 변수를 지역 범위로 가정하고 있다고 인정했다. –

0

을 수행하려고 할 때 쿼리를 덤프 할 수 있고, 나는이 같은 일을하여 액세스 상상 :

<cfloop list="q1,q2,q3" index="qname"> 


    <cfquery name="#qname#" datasource="dsn"> 
     SELECT * from some_table; 
    </cfquery> 

    <cfdump var="#Evaluate('#qname#')#" /> 
</cfloop> 

Evaluate 함수를 사용하면 원하는 것을 할 수 있습니다.

+0

이 작업이 진행 중이고 Adobe는 자신의 문서에서 Query와 함께 Evaluate를 사용합니다. – John

+3

Adobe의 문서에서 예제를 신뢰하지 마십시오. 불행히도 항상 현명한 것은 아닙니다. –

+3

@johnthexiii - 문서의 스 니펫이 항상 좋은 코딩 방법의 예라고 가정하지 마십시오. 그들은 단지 데모 용이며 모범 사례를 항상 사용하지는 않습니다. 일반적으로'evaluate'은 권장하지 않습니다. 주로 필요한 경우는 거의 없기 때문에 상황에 따라 보안 위험이 발생할 수 있습니다. 코드에서 필요하지 않습니다. 연관 배열 표기법을 사용하기 만하면됩니다. – Leigh