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

PHP MySQL UPDATE 語句完整教學

     編輯:PHP 入門

PHP MySQL UPDATE 語句完整教學


語法

UPDATE table_name SET column1 = value1, column2 = value2, ... WHERE condition

關鍵提醒: WHERE 子句決定更新哪些記錄。若省略 WHERE,所有資料將被更新!


MySQLi 物件導向範例

<?php
$mysqli = new mysqli('localhost', 'username', 'password', 'database');
if ($mysqli->connect_errno) {
    die('連線失敗: ' . $mysqli->connect_error);
}

$sql = "UPDATE Persons SET Age = 36 WHERE FirstName = 'Peter' AND LastName = 'Griffin'";
if ($mysqli->query($sql) === TRUE) {
    echo "更新成功,影響行數: " . $mysqli->affected_rows;
} else {
    echo "錯誤: " . $mysqli->error;
}
$mysqli->close();
?>

MySQLi 程序式範例

<?php
$conn = mysqli_connect('localhost', 'username', 'password', 'database');
if (!$conn) {
    die('連線失敗: ' . mysqli_connect_error());
}

$sql = "UPDATE Persons SET Age = 36 WHERE FirstName = 'Peter' AND LastName = 'Griffin'";
if (mysqli_query($conn, $sql)) {
    echo "更新成功,影響行數: " . mysqli_affected_rows($conn);
} else {
    echo "錯誤: " . mysqli_error($conn);
}
mysqli_close($conn);
?>

PDO 範例 (推薦)

<?php
try {
    $pdo = new PDO('mysql:host=localhost;dbname=database;charset=utf8', 'username', 'password');
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "UPDATE Persons SET Age = :age WHERE FirstName = :fn AND LastName = :ln";
    $stmt = $pdo->prepare($sql);
    $stmt->bindValue(':age', 36);
    $stmt->bindValue(':fn', 'Peter');
    $stmt->bindValue(':ln', 'Griffin');
    $stmt->execute();

    echo "更新成功,影響行數: " . $stmt->rowCount();
} catch (PDOException $e) {
    echo "錯誤: " . $e->getMessage();
}
?>

安全最佳實踐

  • 永遠使用預處理語句 防止 SQL 注入。
  • 嚴格驗證 WHERE 條件,避免誤更新大量資料。
  • 僅更新必要欄位,減少鎖定範圍與 Binlog 體積。
  • 大量更新分批處理 (配合 LIMIT),避免長事務與鎖衝突。
  • 樂觀鎖: 增加 version 欄位,更新時檢查 WHERE id = ? AND version = ?,防止併發覆蓋。
  • 審計追蹤: 重要資料變更記錄至審計表或觸發器。

常見錯誤排查

現象可能原因解決
affected_rows 為 0WHERE 條件不匹配、或值與原值相同檢查條件、確認是否需更新
Duplicate entry for key更新唯一索引欄位導致衝突檢查唯一性、處理衝突邏輯
Lock wait timeout大量更新、長事務、索引缺失分批、加索引、縮短事務
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved