開發一套通用的資料表管理介面,支援對「第一欄為主鍵」的任意資料表執行 CRUD 操作,無需為每張表撰寫專用代碼。
| 檔案 | 功能 |
|---|---|
| index.php | 輸入表名,進入管理介面 |
| tables.php | 顯示表內容、提供增/刪/改入口 |
| add.php / addsoftware.php | 新增記錄 |
| edit.php / editsave.php | 編輯記錄 |
| del.php / dele.php | 刪除記錄 |
<!DOCTYPE html>
<html><head><meta charset="gb2312"><title>資料表管理</title></head><body>
<h2>請輸入資料表名稱</h2>
<form method="post" action="tables.php">
<table><tr>
<td>表名: <input name="tablename" size="30" maxlength="30"></td>
<td><input type="submit" value="顯示"></td>
</tr></table>
</form>
</body></html>
<?php
$database = "sunsite";
$tablename = $_REQUEST['tablename'];
mysql_connect("localhost", "root", "") or die("DB連線失敗");
// 1. 取得欄位名(作為表頭)
$query = "SHOW COLUMNS FROM $tablename";
$result = mysql_db_query($database, $query);
$column = 0;
if ($result) {
echo "<table border=1><tr>";
while ($r = mysql_fetch_array($result)) {
echo "<th>{$r[0]}</th>";
$column++;
}
echo "</tr>";
mysql_free_result($result);
}
// 2. 讀取所有資料列
$query = "SELECT * FROM $tablename";
$result = mysql_db_query($database, $query);
if ($result) {
while ($r = mysql_fetch_array($result)) {
echo "<tr>";
for ($col=0; $col<$column; $col++) {
echo "<td>{$r[$col]}</td>";
}
echo "</tr>";
}
echo "</table>";
mysql_free_result($result);
} else {
echo "無資料";
}
// 3. 操作入口
if ($column > 0) {
echo "<ul>
<li><a href='add.php?tablename=$tablename'>新增</a></li>
<li><a href='edit.php?tablename=$tablename'>編輯</a></li>
<li><a href='del.php?tablename=$tablename'>刪除</a></li>
<li><a href='index.php'>返回</a></li>
</ul>";
}
?>
mysqli_select_db() + mysqli_query() 或 PDO)SHOW COLUMNS 結果構建 HTML <th>,自動適應任何表結構tablename 參數串聯,實現單一入口管理多表$database = "sunsite"、預設表 software 請依實際環境修改CREATE TABLE software (id INT PRIMARY KEY, name VARCHAR(50), version VARCHAR(20), description TEXT)⚠️ 本系列代碼僅供教學示範「動態表結構操作」概念,嚴禁直接用於生產環境。存在 SQL 注入、XSS、CSRF、權限繞過、資料完整性等多重高危漏洞。
TableManager 類別封裝:getColumns()、getPrimaryKey()、selectAll()、insert()、update()、delete()本文奠定了「動態資料表管理」的基礎架構:index.php 選表 → tables.php 列表 + 操作入口 → 各功能頁透過 tablename 參數串聯。核心在於善用 SHOW COLUMNS 獲取中繼資料,實現代碼與表結構解耦。後續三篇將完善增刪改功能,並深入剖析安全重構方案。