it-swarm.com.de

Tabellenspaltennamen in MySQL erhalten?

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

263
An employee

Sie können BESCHREIBEN verwenden:

DESCRIBE my_table;

In neueren Versionen können Sie auch INFORMATION_SCHEMA verwenden:

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

Oder Sie können SHOW COLUMNS verwenden:

SHOW COLUMNS FROM my_table;
482
Greg

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 COLUMNS

34
OMG Ponies

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 wird ein Array sein:

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

Entschuldigung für den Nekro, aber ich mag meine Funktion;)

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

20
Philip

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 Ihren Tabellennamen, in dem Sie nur die Feldwerte der DESCRIBE-Anweisung wünschen

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

Wie wäre es damit:

SELECT @cCommand := GROUP_CONCAT( COLUMN_NAME ORDER BY column_name SEPARATOR ',\n')
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_SCHEMA = 'my_database' AND TABLE_NAME = 'my_table';

SET @cCommand = CONCAT( 'SELECT ', @cCommand, ' from my_database.my_table;');
PREPARE xCommand from @cCommand;
EXECUTE xCommand;
4
Wolf Metzner

Möglicherweise möchten Sie auch mysql_fetch_array() auschecken, wie in:

$rs = mysql_query($sql);
while ($row = mysql_fetch_array($rs)) {
//$row[0] = 'First Field';
//$row['first_field'] = 'First Field';
}
3
thewebguy

Es ist auch interessant festzustellen, dass Sie verwenden können
EXPLAIN table_name was synonym ist mit DESCRIBE table_name und SHOW COLUMNS FROM table_name obwohl EXPLAIN wird häufiger verwendet, um Informationen zum Ausführungsplan für Abfragen abzurufen.

3
AnthonyS

Einblick in:

mysql_query('DESCRIBE '.$table);
3
Andy Hume

Die MySQL-Funktion "Tabelle beschreiben" sollte Sie dahin bringen, wohin Sie wollen (setzen Sie Ihren Tabellennamen in "Tabelle"). Sie müssen die Ausgabe etwas analysieren, aber es ist ziemlich einfach. Wenn Sie diese Abfrage ausführen, haben die PHP) - Abfrageergebnisse, die normalerweise ein Schlüssel-Wert-Paar ergeben, die Spaltennamen als Schlüssel. Aber es ist schon eine Weile her Ich habe PHP verwendet, also halte mich nicht daran fest. :)

3
dannysauer

Es gibt auch dieses, wenn Sie bevorzugen:

mysql_query('SHOW COLUMNS FROM tableName'); 
3
James Goodwin

Ich benötigte Spaltennamen als flaches Array, während die anderen Antworten assoziative Arrays zurückgaben. Deshalb habe ich Folgendes verwendet:

$con = mysqli_connect('localhost',$db_user,$db_pw,$db_name);
$table = 'people';

/**
* Get the column names for a mysql table
**/

function get_column_names($con, $table) {
  $sql = 'DESCRIBE '.$table;
  $result = mysqli_query($con, $sql);

  $rows = array();
  while($row = mysqli_fetch_assoc($result)) {
    $rows[] = $row['Field'];
  }

  return $rows;
}

$col_names = function get_column_names($con, $table);

$ col_names ist jetzt gleich:

(
    [0] => name
    [1] => parent
    [2] => number
    [3] => chart_id
    [4] => type
    [5] => id
)
3
duhaime
$col = $db->query("SHOW COLUMNS FROM category");

while ($fildss = $col->fetch_array())
{             
    $filds[] = '"{'.$fildss['Field'].'}"';
    $values[] = '$rows->'.$fildss['Field'].'';
}

if($type == 'value')
{
    return $values = implode(',', $values);
}
else {
     return $filds = implode(',', $filds);
}
2
ibRQD

Die Funktion mysql_list_fields könnte Sie interessieren; aber, wie im Handbuch heißt:

Diese Funktion ist veraltet. Es ist vorzuziehen, mysql_query() zu verwenden, um stattdessen eine SQL-Anweisung SHOW COLUMNS FROM table [LIKE 'name'] Auszugeben.

2
Pascal MARTIN

das hat bei mir funktioniert ..

$sql = "desc MyTableName";
$result = @mysql_query($sql);
while($row = @mysql_fetch_array($result)){
    echo $row[0]."<br>";
}
1
Ad Kahn

mit dem folgenden einfachen Befehl können Sie die gesamte Tabellenstruktur abrufen.

DESC TableName

oder Sie können folgende Abfrage verwenden.

SHOW COLUMNS FROM TableName
1
Harish Kumar

in MySQL erhalten Sie Spaltendetails und Tabellenstruktur, indem Sie Schlüsselwörtern oder Abfragen folgen

1 .DESC table_name

2 .DESCRIBE table_name

3.SHOW COLUMNS FROM table_name

4 .SHOW create table table_name;

5 .EXPLAIN table_name

1
denny

Ich habe ein einfaches PHP-Skript geschrieben, um Tabellenspalten über PHP abzurufen: Show_table_columns.php

Genießen!

1
Hussnain sheikh