2017-08-14 6 views
2

Je souhaite générer dynamiquement une table et ses données. J'ai la source de données et le nom de la table.Sortie dynamique de MySQL sans noms de colonnes à l'aide de ColdFusion

Je cherchais à utiliser <cftable> mais je suis bloqué avec les noms de colonnes dynamiques.

C'est essentiellement ce que je veux faire - cela ne fonctionne évidemment pas, mais ici à des fins d'illustration.

<cfset datasource = "test"> 
<cfset tablename = "mytable"> 

<!--- first get the columns from the table ---> 
<cfquery name="getcolumns" datasource="#datasource#"> 
SELECT COLUMN_NAME, DATA_TYPE 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = '#mytable#'; 
</cfquery> 

<!--- Now select all from the table ---> 
<cfquery name="selectall" datasource="#datasource#"> 
SELECT  * 
FROM  #mytable# 
</cfquery> 

<!--- Output all rows from the table ---> 
<cftable query="selectall"> 
    <cfoutput query="getcolumns"> 
    <cfcol text="#COLUMN_NAME#" header="#COLUMN_NAME#"> 
</cfoutput> 
</cftable> 
+0

Cette question est semblable à: https://stackoverflow.com/questions/22601325/looping-columns-in-coldfusion-along-with-values-in-correct-order –

Répondre

3

Vous pouvez utiliser deux approches. La fonction documentée queryName.columnlist vous donne une liste de tous les noms de colonnes dans l'ordre alphabétique. La fonctionnalité non documentée queryName.getcolumnlist() vous donne un tableau de tous les noms de colonne dans l'ordre dans lequel ils apparaissent dans la clause select.

Cela vous permet de faire quelque chose comme ça.

<cfoutput query="queryName"> 
<cfloop list = "#queryName.columnlist#" index = "column"> 
#queryName[column][currentrow]# 
closing tags