Ottieni solo nomi di colonne come in arrays mysql

Sono nuovo sia in PHP che in MySQL. Voglio creare una tabella dynamic che avrà tutti i campi dalla tabella nel database mysql. Sto cercando di get tutti i nomi delle colonne in un arrays ma non riescono a farlo. Sto provando il seguente codice:

<?php $fields = mysql_query("SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'mytablename' "); $res = mysql_fetch_arrays($fields); foreach ($res as $field) { echo '<tr>'; echo '<td>'; echo $field; echo '</td>'; echo '<td>'; echo "<input type='text' class='' name='tags' id='tags' value=''>"; echo '</td>'; echo '</tr>'; } ?> 

Qualsiasi assistenza sarebbe apprezzata.

Non hai bisogno di una query SQL aggiuntiva solo per get i nomi dei campi. Puoi utilizzare la tua query SELECT normale e get semplicemente i nomi dei campi (e la definizione) da quella query. Migliori performance in questo modo!

Soluzione MySQL deprecata:

La libreria MySQL è deprecata. Può essere usato come in questo link, btu si dovrebbe passare alla libreria mysqli che è quasi identica quando usata proceduralmente (secondo esempio).

htttp: //www.php.net/manual/en/function.mysql-field-name.php

La soluzione MySQL di OOP:

 $query = "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5"; if ($result = $mysqli->query($query)) { /* Get field information for all columns */ while ($finfo = $result->fetch_field()) { printf("Name: %s\n", $finfo->name); printf("Table: %s\n", $finfo->table); printf("max. Len: %d\n", $finfo->max_length); printf("Flags: %d\n", $finfo->flags); printf("Type: %d\n\n", $finfo->type); } $result->close(); } 

La soluzione procedurale MySQLi:

 $query = "SELECT Name, SurfaceArea from Country ORDER BY Code LIMIT 5"; if ($result = mysqli_query($link, $query)) { /* Get field information for all fields */ while ($finfo = mysqli_fetch_field($result)) { printf("Name: %s\n", $finfo->name); printf("Table: %s\n", $finfo->table); printf("max. Len: %d\n", $finfo->max_length); printf("Flags: %d\n", $finfo->flags); printf("Type: %d\n\n", $finfo->type); } mysqli_free_result($result); } 

http://www.php.net/manual/en/mysqli-result.fetch-field.php

Prova la seguente function:

 function mysql_field_arrays($query) { $field = mysql_num_fields($query); for ($i = 0; $i < $field; $i++) { $names[] = mysql_field_name($query, $i); } return $names; } 

Usa questo:

 echo $field['COLUMN_NAME']; 

invece di $field

Questo darà il nome della colonna.

Dopo aver eseguito la query, la query restituisce questi campi:

  TABLE_CATALOG: def TABLE_SCHEMA: schema_name TABLE_NAME: table_name COLUMN_NAME: column_name /*use this column name*/ ORDINAL_POSITION: 49 COLUMN_DEFAULT: NULL IS_NULLABLE: YES DATA_TYPE: varchar CHARACTER_MAXIMUM_LENGTH: 255 CHARACTER_OCTET_LENGTH: 765 NUMERIC_PRECISION: NULL NUMERIC_SCALE: NULL CHARACTER_SET_NAME: utf8 COLLATION_NAME: utf8_general_ci COLUMN_TYPE: varchar(255) COLUMN_KEY: EXTRA: PRIVILEGES: select,insert,update,references COLUMN_COMMENT: 

Uso:

 <?php $fields = mysql_query("SHOW columns FROM mytablename"); while($row = mysql_fetch_arrays($fields)) { echo '<tr>'; echo '<td>'; echo $row["Field"]; echo '</td>'; echo '<td>'; echo "<input type='text' class='' name='tags' id='tags' value=''>"; echo '</td>'; echo '</tr>'; } ?> 

Si noti che questo codice utilizza la libreria mysqli_ * php, perché la libreria legacy mysql_ * è deprecata e non dovrebbe mai essere utilizzata.

Questo potrebbe fare il trucco

 <?php $table = 'tableName'; $query = "SHOW COLUMNS FROM $table"; if($output = mysqli_query($query)): $columns = arrays(); while($result = mysqli_fetch_assoc($output)): $columns[] = $result['Field']; endwhile; endif; echo '<pre>'; print_r($columns); echo '</pre>'; ?> 

Puoi fare qualcosa di simile invece con PDO :

 var_dump(arrays_keys($dbh->query('SELECT * FROM `mytablename` LIMIT 1')->fetch(PDO::FETCH_ASSOC))); 

Utilizzando la libreria PDO per creare una row della tabella con i nomi dei campi:

 $db = new PDO('mysql:host=localhost;dbname=databasename','user','password'); echo "<tr>"; $query = $db->prepare("SHOW COLUMNS FROM `table`"); $query->execute(); $fields = arrays(); while($result = $query->fetch(PDO::FETCH_ASSOC)){ echo "<td style='font-weight:bold; padding:5px'>$result[Field]</td>"; $fields[] = $result['Field']; } echo "</tr>\n";