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

PHP + MySQL 記錄修改操作完整指南

     編輯:PHP 綜合知識

業務流程

  1. 顯示數據列表,每行附帶「修改」按鈕
  2. 點擊修改提交表單(含隱藏 ID 欄位)
  3. 服務端驗證、執行 UPDATE、反饋結果
  4. 重新查詢顯示最新數據

代碼實現(修正原示例 SQL 錯誤與安全問題)

<?php
// 配置
$host = 'localhost'; $user = 'root'; $pass = 'password'; $db = 'test_db';

$mysqli = new mysqli($host, $user, $pass, $db);
if ($mysqli->connect_errno) { die("連接失敗: " . $mysqli->connect_error); }
$mysqli->set_charset('utf8mb4');

// 處理修改提交
if (isset($_POST['btnModify'], $_POST['id'], $_POST['country'], $_POST['animal'])) {
    $id = (int)$_POST['id'];
    $country = $mysqli->real_escape_string($_POST['country']);
    $animal = $mysqli->real_escape_string($_POST['animal']);

    // 修正:UPDATE 必須指定 SET 列 = 值
    $sql = "UPDATE symbols SET country = ?, animal = ? WHERE id = ?";
    $stmt = $mysqli->prepare($sql);
    $stmt->bind_param("ssi", $country, $animal, $id);
    $result = $stmt->execute();

    echo $result ? "修改成功!" : "修改失敗:" . $stmt->error;
    $stmt->close();
}

// 查詢顯示數據
$query = "SELECT id, country, animal FROM symbols";
$result = $mysqli->query($query);
?>
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>修改記錄</title></head><body>
<h1>修改記錄</h1>
<table border="1" cellpadding="10">
    <tr><th>ID</th><th>國家</th><th>動物</th><th>操作</th></tr>
    <?php if ($result && $result->num_rows > 0): while($row = $result->fetch_assoc()): ?>
    <form method="post" action="">
        <tr>
            <td><input type="text" name="id" value="<?= $row['id'] ?>" readonly /></td>
            <td><input type="text" name="country" value="<?= htmlspecialchars($row['country']) ?>" /></td>
            <td><input type="text" name="animal" value="<?= htmlspecialchars($row['animal']) ?>" /></td>
            <td><input type="submit" name="btnModify" value="修改" /></td>
        </tr>
    </form>
    <?php endwhile; endif; ?>
</table>
<?php $mysqli->close(); ?>
</body></html>

關鍵修正點

  • SQL 語法: 原示例 UPDATE animal SET WHERE ... 缺少 SET column = value,已修正。
  • 預處理語句: 使用 prepare() + bind_param() 徹底防注入。
  • ID 類型轉換: (int)$_POST['id'] 確保整型,防異常輸入。
  • 輸出轉義: htmlspecialchars() 防 XSS。
  • 表單結構: 每行獨立 <form>,避免隱藏字段衝突。

進階建議

  • 採用 PRG 模式:POST 成功後 header("Location: " . $_SERVER['PHP_SELF']) 重定向,防重複提交。
  • 引入 CSRF Token 驗證。
  • 使用事務處理多表關聯更新。
  • 前端引入驗證庫(如 Validator.js)提升體驗。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved