Gibt es eine Möglichkeit, den Spaltennamen einer Tabelle in MySQL mit PHP zu erfassen?
Antworten
Zu viele Anzeigen?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';
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
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.
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-->';
- See previous answers
- Weitere Antworten anzeigen