MySQL-Abfrage, um Spaltennamen zu erhalten?

Lesezeit: 3 Minuten

Ich möchte alle Col-Namen einer MySQL-Tabelle in ein Array in PHP bekommen?

Gibt es dazu eine Abfrage?

MySQL Abfrage um Spaltennamen zu erhalten
ircmaxell

Der beste Weg ist, die zu verwenden INFORMATION_SCHEMA Metadaten virtuelle Datenbank. Speziell die INFORMATION_SCHEMA.SPALTEN Tisch…

SELECT `COLUMN_NAME` 
FROM `INFORMATION_SCHEMA`.`COLUMNS` 
WHERE `TABLE_SCHEMA`='yourdatabasename' 
    AND `TABLE_NAME`='yourtablename';

Es ist SEHR leistungsfähig und kann Ihnen TONNEN von Informationen liefern, ohne dass Sie Text analysieren müssen (z. B. Spaltentyp, ob die Spalte nullfähig ist, maximale Spaltengröße, Zeichensatz usw.) …

Oh, und es ist Standard-SQL (Whereas SHOW ... ist eine MySQL-spezifische Erweiterung)…

Weitere Informationen zum Unterschied zwischen SHOW... und mit der INFORMATION_SCHEMA Tabellen, sehen Sie sich die MySQL Dokumentation auf INFORMATION_SCHEMA im Allgemeinen

  • Es ist nur Standard-SQL, wenn Sie diese dummen mysql-spezifischen Backticks nicht verwenden, um Tabellennamen zu zitieren. Ich hasse sie, sie lassen meinen Code falsch aussehen.

    – MarkR

    12. November 2010 um 16:33 Uhr

  • @MarkR Ich habe sie ursprünglich nicht aufgenommen, als ich die Antwort geschrieben habe. Aber dann sah es nur aus wie eine Wand aus schwarzer Schrift. Also habe ich die Backticks hinzugefügt, um die Vorteile der Syntaxhervorhebung zu nutzen. Ja, hätte ich SET @@SESSION.sql_mode = 'ANSI_QUOTES'; vorher auch, aber das gefällt mir gar nicht. Und ich habe kein Problem mit den Backticks für die Bezeichnerabgrenzung. Tatsächlich mag ich sie besser als doppelte Anführungszeichen (doppelte Anführungszeichen lassen die Abfrage für mich falsch erscheinen) … Jedem das Seine …

    – ircmaxell

    12. November 2010 um 16:41 Uhr

  • Das Zitieren der Tabellennamen ist im obigen Beispiel überhaupt nicht erforderlich.

    – MarkR

    12. November 2010 um 16:56 Uhr

  • @ MarkR Ich weiß, dass es nicht so ist. Deshalb sagte ich Ich habe sie ursprünglich nicht aufgenommen, als ich die Antwort schrieb . Ich habe sie hinzugefügt, um die Vorteile der Syntaxhervorhebung zu nutzen …

    – ircmaxell

    12. November 2010 um 17:03 Uhr

  • Beachten Sie, dass bei InnodDB-Tabellen die Auswahl aus information_schema sehr langsam sein kann. In einigen Servern mehr als eine Minute

    – macjohn

    30. April 2013 um 10:37 Uhr

MySQL Abfrage um Spaltennamen zu erhalten
bcosca

Sie können die folgende Abfrage für MYSQL verwenden:

SHOW `columns` FROM `your-table`;

Unten ist der Beispielcode, der zeigt, wie die obige Syntax in PHP implementiert wird, um die Namen der Spalten aufzulisten:

$sql = "SHOW COLUMNS FROM your-table";
$result = mysqli_query($conn,$sql);
while($row = mysqli_fetch_array($result)){
    echo $row['Field']."<br>";
}

Einzelheiten zur Ausgabe von SHOW COLUMNS FROM TABLE Besuch: MySQL-Referenz.

  • Oder… DESC TableName; 😉

    – doppelt_j

    15. Oktober 2014 um 21:22 Uhr

  • Beachten Sie, dass SHOW COLUMNS ist wahnsinnig langsam und kann bei Verwendung ernsthafte Leistungsprobleme verursachen, da die DB-Engine Tabellenstatistiken bei jedem Aufruf neu berechnen kann.

    – stehlen

    4. Februar um 9:16


Es scheint 2 Wege zu geben:

DESCRIBE `tablename`

oder

SHOW COLUMNS FROM `tablename`

Mehr dazu DESCRIBE Hier: http://dev.mysql.com/doc/refman/5.0/en/describe.html

  • Ah, DESCRIBE ist nur eine Abkürzung für SHOW COLUMNS FROM.

    – Surreale Träume

    12. November 2010 um 13:47 Uhr

  • Und DESC ist noch kürzer Hand für DESCRIBE!

    – Brett Widmeier

    8. September 2014 um 16:18 Uhr

  • Ja @SurrealDreams aber mit DESCRIBE kann nicht mit verwendet werden WHERE. Zum Beispiel : SHOW COLUMNS FROM acct__order WHERE ``Key`` = 'PRI'; um den Primärschlüssel einer Tabelle zu erhalten, funktioniert nicht DESCRIBE.

    – Melomann

    2. September 2020 um 11:45 Uhr


1646969647 96 MySQL Abfrage um Spaltennamen zu erhalten
Jeff

Ich habe dies in der Vergangenheit getan.

SELECT column_name
FROM information_schema.columns
WHERE table_name="insert table name here"; 

1646969648 927 MySQL Abfrage um Spaltennamen zu erhalten
Der Pixel-Entwickler

Bearbeiten: Heute habe ich gelernt, wie man das besser macht. Bitte sehen Sie sich die Antwort von ircmaxell an.


Analysieren Sie die Ausgabe von SHOW COLUMNS FROM table;

Hier steht mehr dazu: http://dev.mysql.com/doc/refman/5.0/en/show-columns.html

MySQL Abfrage um Spaltennamen zu erhalten
Toni Gil

Verwenden mysql_fetch_field() um alle Spaltendaten anzuzeigen. Sehen Handbuch.

$query = 'select * from myfield';
$result = mysql_query($query);
$i = 0;
while ($i < mysql_num_fields($result))
{
   $fld = mysql_fetch_field($result, $i);
   $myarray[]=$fld->name;
   $i = $i + 1;
}

“Warnung Diese Erweiterung ist seit PHP 5.5.0 veraltet und wird in Zukunft entfernt.”

1646969648 393 MySQL Abfrage um Spaltennamen zu erhalten
Gil Baggio

Die einfachste Lösung aus allen Antworten:

DESC `table name`

oder

DESCRIBE `table name`

oder

SHOW COLUMNS FROM `table name`

989750cookie-checkMySQL-Abfrage, um Spaltennamen zu erhalten?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy