Ich möchte alle Col-Namen einer MySQL-Tabelle in ein Array in PHP bekommen?
Gibt es dazu eine Abfrage?
Ich möchte alle Col-Namen einer MySQL-Tabelle in ein Array in PHP bekommen?
Gibt es dazu eine Abfrage?
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
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
Jeff
Ich habe dies in der Vergangenheit getan.
SELECT column_name
FROM information_schema.columns
WHERE table_name="insert table name here";
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
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.”
Gil Baggio
Die einfachste Lösung aus allen Antworten:
DESC `table name`
oder
DESCRIBE `table name`
oder
SHOW COLUMNS FROM `table name`