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

PHP MySQL 查詢資料完整範例:列表與詳細檢視

     編輯:PHP 相關知識

前言

本文示範 PHP 從 MySQL 查詢資料的兩種常見模式:列表頁顯示所有使用者摘要,詳細頁根據 ID 顯示單一筆完整資料。使用 mysqli 預備語句確保安全。

1. 資料表結構假設

CREATE TABLE `userinfo` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `username` VARCHAR(50) NOT NULL,
  `gender` ENUM('M','F') NOT NULL,
  `age` TINYINT UNSIGNED NOT NULL,
  `regdate` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

2. 列表頁:顯示所有使用者

<?php
require_once 'db_connect.php'; // 包含 $mysqli 連線物件

$sql = "SELECT `id`, `username`, `gender`, `age`, `regdate` FROM `userinfo` ORDER BY `id` DESC";
$stmt = $mysqli->prepare($sql);
$stmt->execute();
$result = $stmt->get_result();
?>
<table border="1" cellpadding="5">
  <thead>
    <tr><th>編號</th><th>用戶名稱</th><th>性別</th><th>年齡</th><th>註冊時間</th><th>操作</th></tr>
  </thead>
  <tbody>
  <?php while ($row = $result->fetch_assoc()): ?>
    <tr>
      <td><?= $row['id'] ?></td>
      <td><?= htmlspecialchars($row['username']) ?></td>
      <td><?= $row['gender'] ?></td>
      <td><?= $row['age'] ?></td>
      <td><?= $row['regdate'] ?></td>
      <td><a href="detail.php?id=<?= $row['id'] ?>">查看詳情</a></td>
    </tr>
  <?php endwhile; ?>
  </tbody>
</table>
<?php
$stmt->close();
$mysqli->close();
?>

3. 詳細頁:根據 ID 顯示單一資料

<?php
require_once 'db_connect.php';

$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;
if ($id <= 0) {
    die("無效的 ID");
}

$stmt = $mysqli->prepare("SELECT `id`, `username`, `gender`, `age`, `regdate` FROM `userinfo` WHERE `id` = ?");
$stmt->bind_param("i", $id);
$stmt->execute();
$result = $stmt->get_result();

if ($row = $result->fetch_assoc()) {
?>
  <dl>
    <dt>編號</dt><dd><?= $row['id'] ?></dd>
    <dt>用戶名</dt><dd><?= htmlspecialchars($row['username']) ?></dd>
    <dt>性別</dt><dd><?= $row['gender'] === 'M' ? '男' : '女' ?></dd>
    <dt>年齡</dt><dd><?= $row['age'] ?></dd>
    <dt>註冊時間</dt><dd><?= $row['regdate'] ?></dd>
  </dl>
  <p><a href="list.php">返回列表</a></p>
<?php
} else {
    echo "<p>找不到該使用者</p>";
}
$stmt->close();
$mysqli->close();
?>

4. 合併單一檔案版本(list_detail.php)

<?php
require_once 'db_connect.php';

$id = isset($_GET['id']) ? (int)$_GET['id'] : 0;

if ($id > 0) {
    // 詳細檢視
    $stmt = $mysqli->prepare("SELECT * FROM `userinfo` WHERE `id` = ?");
    $stmt->bind_param("i", $id);
    $stmt->execute();
    $row = $stmt->get_result()->fetch_assoc();
    $stmt->close();

    if ($row) {
        // 輸出詳細資料 HTML...
    } else {
        echo "<p>資料不存在</p>";
    }
} else {
    // 列表檢視
    $result = $mysqli->query("SELECT `id`, `username`, `gender`, `age`, `regdate` FROM `userinfo` ORDER BY `id` DESC");
    // 輸出表格 HTML...
    $result->free();
}
$mysqli->close();
?>

安全性重點

  • 所有輸出至 HTML 的資料必須經 htmlspecialchars() 轉義。
  • 使用預備語句(prepare + bind_param)防止 SQL Injection。
  • 輸入驗證:(int)$_GET['id'] 強制轉整數。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved