首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 取得 MySQL 資料表欄位資訊的兩種方法

     編輯:PHP 相關知識

方法一:mysql_fetch_field() (已棄用)

$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 移除;需先查詢資料表。

方法二:SHOW COLUMNS / DESCRIBE (推薦)

現代化寫法:PDO + Information Schema

$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_NULLABLEYES/NO
COLUMN_KEYPRI, UNI, MUL (索引類型)
COLUMN_DEFAULT預設值
EXTRAauto_increment 等額外屬性
COLUMN_COMMENT欄位備註

應用場景

  • 動態生成 CRUD 表單/表格
  • 資料庫結構比對/遷移工具
  • 自動生成 Model/Entity 類別
  • API 文件自動生成
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved