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

PHP + MySQL 單頁面實現 CRUD:表格列表與編輯/刪除連結傳遞 ID

     編輯:程式設計綜合問答

基本架構

<?php
// db.php - 資料庫連線
$pdo = new PDO("mysql:host=localhost;dbname=test", "user", "pass");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

// 處理刪除
if (isset($_GET['delete'])) {
    $stmt = $pdo->prepare("DELETE FROM users WHERE id = ?");
    $stmt->execute([$_GET['delete']]);
    header("Location: " . $_SERVER['PHP_SELF']);
    exit;
}

// 處理新增/修改表單提交
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($_POST['id']) && $_POST['id']) {
        $stmt = $pdo->prepare("UPDATE users SET name=?, email=? WHERE id=?");
        $stmt->execute([$_POST['name'], $_POST['email'], $_POST['id']]);
    } else {
        $stmt = $pdo->prepare("INSERT INTO users (name, email) VALUES (?, ?)");
        $stmt->execute([$_POST['name'], $_POST['email']]);
    }
    header("Location: " . $_SERVER['PHP_SELF']);
    exit;
}

// 讀取列表
$users = $pdo->query("SELECT * FROM users")->fetchAll(PDO::FETCH_ASSOC);
?>

HTML 表單與列表

<form method="post">
    <input type="hidden" name="id" value="<?= $edit['id'] ?? '' ?>">
    <input name="name" placeholder="姓名" value="<?= $edit['name'] ?? '' ?>" required>
    <input name="email" placeholder="Email" value="<?= $edit['email'] ?? '' ?>" required>
    <button type="submit"><?= isset($edit) ? '更新' : '新增' ?></button>
    <?php if (isset($edit)): ?><a href="?><?= $_SERVER['PHP_SELF'] ?>">取消編輯</a><?php endif; ?>
</form>

<table border="1">
    <tr><th>ID</th><th>姓名</th><th>Email</th><th>操作</th></tr>
    <?php foreach ($users as $u): ?>
    <tr>
        <td><?= $u['id'] ?></td>
        <td><?= htmlspecialchars($u['name']) ?></td>
        <td><?= htmlspecialchars($u['email']) ?></td>
        <td>
            <a href="?edit=<?= $u['id'] ?>">編輯</a> |
            <a href="?delete=<?= $u['id'] ?>" onclick="return confirm('確定刪除?')">刪除</a>
        </td>
    </tr>
    <?php endforeach; ?>
</table>

編輯模式處理

<?php
$edit = null;
if (isset($_GET['edit'])) {
    $stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
    $stmt->execute([$_GET['edit']]);
    $edit = $stmt->fetch(PDO::FETCH_ASSOC);
}
?>

安全提醒

  • **全部使用 Prepared Statement** 防 SQL 注入。
  • 輸出到 HTML 必須 htmlspecialchars() 防 XSS。
  • 刪除/修改等敏感操作建議改用 POST + CSRF Token。
  • 密碼欄位請用 password_hash() / password_verify()。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved