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

PHP 生成 HTML 表格實戰範例:從資料庫讀取並渲染表格

     編輯:PHP 相關知識

本文提供一個完整的 PHP 範例,示範如何連接 MySQL 資料庫、查詢資料並動態生成 HTML 表格。雖然範例使用較舊的 mysql_* 函數(已棄用),但邏輯清晰,適合初學者理解資料庫驅動網頁的基本流程。現代專案建議改用 PDO 或 MySQLi 並採用預處理語句以防 SQL 注入。

核心程式碼解析

<?php
// 1. 建立資料庫連線
$link = mysqli_connect("localhost", "root", "123456", "bustest");
if (!$link) { die("連線失敗: " . mysqli_connect_error()); }

// 2. 查詢不重複的 name 並依 id 排序
$sql1 = "SELECT name FROM info GROUP BY name ORDER BY id ASC";
$res1 = mysqli_query($link, $sql1);

echo "<table border='1'>";

// 3. 外層迴圈:處理每個 name
while ($row1 = mysqli_fetch_assoc($res1)) {
    $name = $row1["name"];
    
    // 4. 內層查詢:取得該 name 下的所有 id
    $sql2 = "SELECT id FROM info WHERE name = ? ORDER BY id ASC";
    $stmt = mysqli_prepare($link, $sql2);
    mysqli_stmt_bind_param($stmt, "s", $name);
    mysqli_stmt_execute($stmt);
    $res2 = mysqli_stmt_get_result($stmt);
    
    // 5. 計算該 name 出現的總次數(用於 rowspan)
    $sql3 = "SELECT COUNT(*) as cnt FROM info WHERE name = ?";
    $stmt3 = mysqli_prepare($link, $sql3);
    mysqli_stmt_bind_param($stmt3, "s", $name);
    mysqli_stmt_execute($stmt3);
    $row3 = mysqli_fetch_assoc(mysqli_stmt_get_result($stmt3));
    $rowspan = $row3['cnt'];
    
    $firstRow = true;
    while ($row2 = mysqli_fetch_assoc($res2)) {
        echo "<tr>";
        echo "<td>" . htmlspecialchars($row2['id']) . "</td>";
        
        // 只在第一行輸出 name 欄位,並設定 rowspan
        if ($firstRow) {
            echo "<td rowspan='$rowspan'>" . htmlspecialchars($name) . "</td>";
            $firstRow = false;
        }
        echo "</tr>";
    }
    mysqli_stmt_close($stmt);
    mysqli_stmt_close($stmt3);
}
echo "</table>";
mysqli_close($link);
?>

關鍵點說明

  • 分組查詢:GROUP BY name 取得唯一分類名稱。
  • 巢狀查詢:外層遍歷分類,內層查詢該分類下的明細。
  • rowspan 合併儲存格:先用 COUNT(*) 算出筆數,首列輸出 <td rowspan=N> 即可垂直合併。
  • 安全性:範例改用 mysqli_prepare 綁定參數,避免 SQL 注入風險。

進階建議

若資料量大,可考慮單次查詢搭配 PHP 端分組,或使用 JOIN、視圖簡化邏輯。生產環境務必啟用錯誤報告、採用參數化查詢、並妥善處理編碼(建議資料庫、連線、頁面統一 UTF-8)。

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