Ich möchte alle Spaltennamen einer MySQL-Tabelle in ein Array in PHP aufnehmen.
Gibt es dafür eine Abfrage?
Am besten verwenden Sie die virtuelle Metadaten-Datenbank INFORMATION_SCHEMA . Insbesondere die Tabelle INFORMATION_SCHEMA.COLUMNS ...
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 Text analysieren zu müssen (z. B. Spaltentyp, ob die Spalte nullwertfähig ist, maximale Spaltengröße, Zeichensatz usw.) ...
Oh, und es ist Standard-SQL (während SHOW ...
es sich um eine MySQL-spezifische Erweiterung handelt) ...
Weitere Informationen über den Unterschied zwischen SHOW...
und die Verwendung von INFORMATION_SCHEMA
Tabellen, überprüfen Sie die MySQL - out - Dokumentation auf INFORMATION_SCHEMA
allgemein ...
SET @@SESSION.sql_mode = 'ANSI_QUOTES';
vorher haben können, aber das gefällt mir wirklich nicht. Und ich habe kein Problem mit den Back-Ticks für die Abgrenzung der Bezeichner. Tatsächlich mag ich sie besser als doppelte Anführungszeichen (doppelte Anführungszeichen lassen die Abfrage für mich falsch erscheinen) ... Für jeden seine eigenen ...Sie können die folgende Abfrage für MYSQL verwenden:
Unten finden Sie den Beispielcode, der zeigt, wie die obige Syntax in PHP implementiert wird, um die Namen der Spalten aufzulisten:
Einzelheiten zur Ausgabe des
SHOW COLUMNS FROM TABLE
Besuchs finden Sie unter: MySQL Refrence.quelle
DESC TableName;
;-)Es scheint zwei Möglichkeiten zu geben:
oder
Mehr dazu
DESCRIBE
hier: http://dev.mysql.com/doc/refman/5.0/en/describe.htmlquelle
DESCRIBE
ist nur eine Abkürzung fürSHOW COLUMNS FROM
.DESC
ist noch kürzer fürDESCRIBE
!Ich habe das in der Vergangenheit getan.
quelle
Edit : Heute habe ich gelernt, wie man das besser macht. Bitte lesen Sie die Antwort von ircmaxell.
Analysieren Sie die Ausgabe von
SHOW COLUMNS FROM table;
Hier erfahren Sie mehr darüber: http://dev.mysql.com/doc/refman/5.0/en/show-columns.html
quelle
Verwenden Sie
mysql_fetch_field()
diese Option , um alle Spaltendaten anzuzeigen. Siehe Handbuch ."Warnung Diese Erweiterung ist ab PHP 5.5.0 veraltet und wird in Zukunft entfernt."
quelle
mysqli_num_fields()
undmysqli_fetch_field_direct()
sind die aktualisierten MethodenEine alte PHP-Funktion "mysql_list_fields ()" ist veraltet. Der beste Weg, um Namen von Feldern zu erhalten, ist heute die Abfrage "SHOW COLUMNS FROM table_name [LIKE 'name']". Hier ist ein kleines Beispiel:
quelle
quelle
Ich bin mir nicht sicher, ob Sie danach gesucht haben, aber das hat bei mir funktioniert:
Das gibt ein einfaches Array der Spaltennamen / Variablennamen in Ihrer Tabelle oder Ihrem Array als Zeichenfolgen zurück, was ich brauchte, um MySQL-Abfragen dynamisch zu erstellen. Meine Frustration war, dass ich einfach nicht sehr gut weiß, wie man Arrays in PHP indiziert, also war ich mir nicht sicher, was ich mit den Ergebnissen von DESC oder SHOW anfangen sollte. Hoffe meine Antwort ist hilfreich für Anfänger wie mich!
So überprüfen Sie das Ergebnis:
print_r($col_names);
quelle
Wenn Sie Ihre gesamte Tabellenstruktur mit einigen Dateien überprüfen möchten, verwenden Sie diesen Code. In dieser Abfrage wähle ich Spaltenname, Spaltentyp und Tabellenname für weitere Details. Ich verwende order by column_type, damit ich es leicht sehen kann.
Wenn Sie nur doppelt typisierte Dateien überprüfen möchten, können Sie dies problemlos tun
Wenn Sie überprüfen möchten, in welchem Feld der Nulltyp usw. zulässig ist, können Sie dies verwenden
Sie möchten mehr überprüfen, als dieser Link Ihnen auch hilft.
https://dev.mysql.com/doc/refman/5.7/en/columns-table.html
quelle
SHOW COLUMNS in MySQL 5.1 (nicht 5.5) verwendet eine temporäre Festplattentabelle.
Daher kann es in einigen Fällen als langsam angesehen werden. Zumindest kann es Ihren Wert für created_tmp_disk_tables erhöhen . Stellen Sie sich eine temporäre Festplattentabelle pro Verbindung oder pro Seitenanforderung vor.
SPALTEN ANZEIGEN ist nicht wirklich so langsam, möglicherweise weil es den Dateisystem-Cache verwendet. Phpmyadmin sagt konsequent ~ 0,5ms. Dies ist nichts im Vergleich zu 500 ms bis 1000 ms beim Bereitstellen einer WordPress-Seite. Trotzdem gibt es Zeiten, in denen es darauf ankommt. Es liegt eine Beteiligung des Festplattensystems vor. Sie wissen nie, was passiert, wenn der Server ausgelastet ist, der Cache voll ist, die Festplatte blockiert ist usw.
Das Abrufen von Spaltennamen über SELECT * FROM ... LIMIT 1 betrug ca. 0,1 ms und kann auch den Abfragecache verwenden.
Hier ist mein kleiner optimierter Code, um Spaltennamen aus einer Tabelle abzurufen, ohne wenn möglich show-Spalten zu verwenden:
Anmerkungen:
quelle
Probieren Sie dieses aus, ich persönlich benutze es:
quelle
IN WORDPRESS:
quelle
Diese Frage ist alt, aber ich habe hier nach einer Möglichkeit gesucht, eine bestimmte Abfrage auf dynamische Weise zu finden (nicht unbedingt nur die Felder einer Tabelle). Und da die Leute dies in anderen verwandten Fragen immer wieder als Antwort auf diese bestimmte Aufgabe angeben, teile ich anhand der Tipps von Gavin Simpson die Art und Weise, wie ich festgestellt habe, dass dies möglich ist:
Dies kann leicht modifiziert werden, um die Feldnamen in ein Array einzufügen.
Verwenden eines einfachen:
$sql="SELECT * FROM myTable LIMIT 1"
Kann Ihnen die Felder einer beliebigen Tabelle geben, ohne dass SieSHOW COLUMNS
ein zusätzliches PHP-Modul verwenden müssen, falls erforderlich (Entfernen des Daten-Dump-Teils).Hoffentlich hilft das jemand anderem.
quelle
Wenn Sie PHP verwenden, verwenden Sie dieses Wesentliche .
Es kann ausgewählte Felder mit vollständigen Informationen ohne Ergebnis erhalten , und alle benutzerdefinierten Felder wie:
Wenn über SQL keine Daten zurückgegeben werden, werden auch die Feldnamen aname, bname und der andere Feldname von b angezeigt
nur zwei Zeilen:
quelle
Diese Abfrage ruft eine Liste aller Spalten in einer Datenbank ab, ohne dass ein Tabellenname angegeben werden muss. Es wird nur eine Liste mit Spaltennamen zurückgegeben:
Als ich diese Abfrage in phpmyadmin ausführte, wurden jedoch eine Reihe von Fehlern angezeigt. Trotzdem hat es funktioniert. Verwenden Sie es daher mit Vorsicht.
quelle
Die einfachste Lösung aller Antworten:
oder
oder
quelle
Wenn Sie nur die Feldnamen und -typen benötigen (möglicherweise zum einfachen Einfügen in Excel):
entfernen
wenn Sie alle Datentypen wollen
quelle
Ich bin kein Experte, aber das funktioniert bei mir ..
quelle
Ich habe diese Abfrage in SQL Server ausprobiert und dies hat bei mir funktioniert:
quelle