2016-11-07 2 views
0

Ich habe Schwierigkeiten zu versuchen, ListAppend zu verwenden.ColdFusion ListAppend

Ich habe Daten aus einer Tabelle und das ist mein Code.

<cfquery name="getData" datasource="test"> 
    select * from test; 
</cfquery> 

Nun, was ich tun möchte, ist, alle Werte in der Spalte Namen zu machen, die ich als nm_column in eine Liste benannt haben mit ListAppend.

<cfset dataList = ListAppend('', '#getData.nm_column#')> 
<cfoutput>#dataList#</cfoutput> 

Was dies bedeutet ist, dass es nur der erste Wert des nm_colum zeigt. Ich verstehe, dass mir der Loop-Teil fehlt, deshalb zeigt es mir nur den ersten Wert. Wie schleife ich es und bekomme alle Werte dazu?

Ich habe das versucht, aber es hat nicht funktioniert.

So kann mir bitte jemand den Weg lehren, diesen Code richtig zu schreiben?

Antwort

5

In ColdFusion gibt es eine eingebaute Funktion, die dies für Sie erledigt.

<cfset dataList = valueList(getData.nm_column)> 

Was das Problem mit Ihrem Code, listAppend ‚s erstes Argument ist die Liste, die Sie Dinge hinzugefügt sind. Außerdem können Sie ColdFusion-Tags nicht so verschachteln. Der Code wird nicht kompiliert.

Wenn Sie etwas durchschleifen möchten, um es an eine Liste anzuhängen, würden Sie das tun.

<cfset dataList = ''> 
<cfloop query="getData"> 
    <cfset dataList = listAppend(dataList, nm_column)> 
</cfloop> 

Dies wäre schrecklich für die Leistung, obwohl eine Zeichenfolge unveränderlich ist. Wenn Sie wirklich über eine Lippe Elemente zu einer Liste hinzufügen wollten, würde ich ein Array erstellen und dann arrayToList verwenden, um dieses Array in eine Liste zu konvertieren.

+0

Sie müssen wahrscheinlich kein Array erstellen. Array-Funktionen funktionieren in Abfrage-Spalten. –