首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

MySQL 表列名獲取與 PHP 顯示完整指南

     編輯:程式設計綜合問答

前言

在開發 PHP 應用時,經常需要動態獲取 MySQL 資料表的欄位名稱,例如用於自動生成表單、建立動態查詢介面或進行資料匯出。本文將介紹兩種常用方法:使用 SHOW COLUMNS 語句與查詢 INFORMATION_SCHEMA.COLUMNS 視圖,並示範如何在 PHP 中將結果輸出到網頁。

方法一:使用 SHOW COLUMNS 語句

最直接的方式是執行 SHOW COLUMNS FROM 表名。此命令會返回該表每個欄位的詳細資訊,包括 Field(欄位名)、Type、Null、Key、Default、Extra 等。

SHOW COLUMNS FROM `users`;

在 PHP 中執行並輸出欄位名:

<?php
$mysqli = new mysqli("localhost", "user", "password", "database");
if ($mysqli->connect_errno) {
    die("連線失敗: " . $mysqli->connect_error);
}

$result = $mysqli->query("SHOW COLUMNS FROM `users`");
if ($result) {
    echo "<table border='1'><tr><th>欄位名稱</th><th>類型</th></tr>";
    while ($row = $result->fetch_assoc()) {
        echo "<tr><td>" . htmlspecialchars($row['Field']) . "</td>";
        echo "<td>" . htmlspecialchars($row['Type']) . "</td></tr>";
    }
    echo "</table>";
    $result->free();
}
$mysqli->close();
?>

方法二:查詢 INFORMATION_SCHEMA.COLUMNS

若需更靈活的篩選(如特定資料庫、排除某些欄位),可查詢系統視圖:

SELECT COLUMN_NAME, DATA_TYPE, IS_NULLABLE, COLUMN_DEFAULT
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'your_db' AND TABLE_NAME = 'your_table'
ORDER BY ORDINAL_POSITION;

PHP 範例:

<?php
$pdo = new PDO("mysql:host=localhost;dbname=your_db", "user", "password");
$stmt = $pdo->prepare("
    SELECT COLUMN_NAME, DATA_TYPE
    FROM INFORMATION_SCHEMA.COLUMNS
    WHERE TABLE_SCHEMA = ? AND TABLE_NAME = ?
    ORDER BY ORDINAL_POSITION
");
$stmt->execute(['your_db', 'your_table']);
$columns = $stmt->fetchAll(PDO::FETCH_ASSOC);

echo "<ul>";
foreach ($columns as $col) {
    echo "<li>" . htmlspecialchars($col['COLUMN_NAME']) . " (" . htmlspecialchars($col['DATA_TYPE']) . ")</li>";
}
echo "</ul>";
?>

常見應用場景

  • 動態建立 HTML 表單,根據欄位類型自動選擇 input、select、textarea 等控件。
  • 資料匯出時自動生成 CSV/Excel 標題列。
  • 建立通用的資料表管理介面(如 phpMyAdmin 風格)。

注意事項

  • 務必使用預處理語句防止 SQL 注入。
  • 輸出到網頁時,記得對資料進行 htmlspecialchars() 轉義,避免 XSS 攻擊。
  • 大型資料表欄位較多時,考慮分頁或快取機制以提升效能。

MySQL 列名輸出示例

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved