425 Stimmen

Tabellenspaltennamen in MySQL abrufen?

Gibt es eine Möglichkeit, den Spaltennamen einer Tabelle in MySQL mit PHP zu erfassen?

767voto

Greg Punkte 306033

Sie können verwenden BESCHREIBEN :

DESCRIBE my_table;

In neueren Versionen können Sie auch INFORMATION_SCHEMA :

SELECT COLUMN_NAME
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';

Oder Sie können verwenden SPALTEN ZEIGEN :

SHOW COLUMNS FROM my_table;

Oder um Spaltennamen mit Komma in einer Zeile zu erhalten:

SELECT group_concat(COLUMN_NAME)
  FROM INFORMATION_SCHEMA.COLUMNS
  WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';

49voto

OMG Ponies Punkte 312816

Die folgenden SQL-Anweisungen sind nahezu gleichwertig:

SELECT COLUMN_NAME
  FROM INFORMATION_SCHEMA.COLUMNS
 WHERE table_name = 'tbl_name'
  [AND table_schema = 'db_name']
  [AND column_name LIKE 'wild']

SHOW COLUMNS
FROM tbl_name
[FROM db_name]
[LIKE 'wild']

Referenz: INFORMATION_SCHEMA SPALTEN

22voto

Philip Punkte 273

Ich habe eine PDO-Funktion erstellt, die alle Spaltennamen in einem einfachen Array zurückgibt.

public function getColumnNames($table){
    $sql = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = :table";
    try {
        $core = Core::getInstance();
        $stmt = $core->dbh->prepare($sql);
        $stmt->bindValue(':table', $table, PDO::PARAM_STR);
        $stmt->execute();
        $output = array();
        while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
            $output[] = $row['COLUMN_NAME'];                
        }
        return $output; 
    }

    catch(PDOException $pe) {
        trigger_error('Could not connect to MySQL database. ' . $pe->getMessage() , E_USER_ERROR);
    }
}

Die Ausgabe ist ein Array:

Array (
[0] => id
[1] => name
[2] => email
[3] => shoe_size
[4] => likes
... )

Sorry für den Necro, aber ich mag meine Funktion ;)

P.S. Ich habe die Klasse Core nicht aufgenommen, aber Sie können Ihre eigene Klasse verwenden. D.S.

9voto

James Goodwin Punkte 7200

Es gibt auch das hier, wenn Sie das bevorzugen:

mysql_query('SHOW COLUMNS FROM tableName');

8voto

leela Punkte 546

Diese Lösung ist von der Kommandozeile mysql

mysql>USE information_schema;

In der folgenden Abfrage ändern Sie einfach <--DATABASE_NAME--> in Ihre Datenbank und <--TABLENAME--> in den Namen Ihrer Tabelle, in der Sie nur die Feldwerte der DESCRIBE-Anweisung benötigen

mysql> SELECT COLUMN_NAME FROM COLUMNS WHERE TABLE_SCHEMA = '<--DATABASE_NAME-->' AND   TABLE_NAME='<--TABLENAME-->';

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X