$query = mysql_query("SELECT * FROM `$table` LIMIT 1");
$num = mysql_num_fields($query);
$fields = array();
for ($i = 0; $i < $num; $i++) {
$meta = mysql_fetch_field($query, $i);
$fields[] = $meta->name;
}
print_r($fields);
缺點:mysql_* 函式自 PHP 5.5 棄用、PHP 7.0 移除;需先查詢資料表。
$pdo = new PDO("mysql:host=localhost;dbname=test;charset=utf8", 'user', 'pass');
$stmt = $pdo->prepare("
SELECT COLUMN_NAME, DATA_TYPE, COLUMN_COMMENT, CHARACTER_MAXIMUM_LENGTH,
IS_NULLABLE, COLUMN_KEY, COLUMN_DEFAULT, EXTRA
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?
ORDER BY ORDINAL_POSITION
");
$stmt->execute([$dbName, $tableName]);
$columns = $stmt->fetchAll(PDO::FETCH_ASSOC);
print_r($columns);
| 欄位 | 說明 |
|---|---|
| COLUMN_NAME | 欄位名稱 |
| DATA_TYPE | 資料型別 (int, varchar, datetime...) |
| CHARACTER_MAXIMUM_LENGTH | 字元最大長度 |
| IS_NULLABLE | YES/NO |
| COLUMN_KEY | PRI, UNI, MUL (索引類型) |
| COLUMN_DEFAULT | 預設值 |
| EXTRA | auto_increment 等額外屬性 |
| COLUMN_COMMENT | 欄位備註 |