首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL UPDATE 更新數據完整教學:語法、PHP 實戰與條件控制

     編輯:MySQL 資料庫相關知識

UPDATE 是 MySQL 修改表中現有記錄的核心語句。本文系統講解語法結構、條件控制、PHP 調用實戰、多字段更新與安全最佳實踐,適合初學者快速掌握數據修改操作。

一、 基礎語法

UPDATE table_name
SET column_name = new_value
WHERE column_name = some_value;
  • SET 子句:指定要修改的列與新值,多列用逗號分隔:SET col1=val1, col2=val2。
  • WHERE 子句:**條件過濾,決定更新哪些行**。省略 WHERE 將更新全表所有行,極其危險!
  • SQL 不區分大小寫:UPDATE = update。

二、 PHP 調用實戰(mysqli 推薦)

注意: 老版 mysql_* 函數已棄用,下方使用 mysqli 面向對象風格 演示。

<?php
$mysqli = new mysqli("localhost", "peter", "abc123", "my_db");
if ($mysqli->connect_errno) {
    die("Connect failed: " . $mysqli->connect_error);
}

// 更新 Peter Griffin 年齡為 36
$sql = "UPDATE Person SET Age = 36 WHERE FirstName = 'Peter' AND LastName = 'Griffin'";

if ($mysqli->query($sql) === TRUE) {
    echo "記錄更新成功,影響行數: " . $mysqli->affected_rows;
} else {
    echo "更新失敗: " . $mysqli->error;
}

$mysqli->close();
?>

更新前後數據對比

FirstNameLastNameAge (更新前)Age (更新後)
PeterGriffin3536
GlennQuagmire3333 (未變)

三、 進階用法與最佳實踐

1. 多字段同時更新

UPDATE Person 
SET Age = 36, City = 'New York', Status = 'Active'
WHERE FirstName = 'Peter' AND LastName = 'Griffin';

2. 使用表達式/函數計算新值

-- 年齡 +1
UPDATE Person SET Age = Age + 1 WHERE LastName = 'Griffin';

-- 更新時間戳
UPDATE orders SET updated_at = NOW() WHERE id = 1001;

-- 字符串拼接
UPDATE users SET full_name = CONCAT(first_name, ' ', last_name);

3. 條件更新:CASE WHEN 動態賦值

UPDATE products
SET price = CASE
    WHEN category = 'electronics' THEN price * 0.9
    WHEN category = 'clothing' THEN price * 0.85
    ELSE price
END;

4. 安全防範:SQL 注入防護

  • 絕不拼接字符串構建 SQL! 必須使用**預處理語句**:
$stmt = $mysqli->prepare("UPDATE Person SET Age = ? WHERE FirstName = ? AND LastName = ?");
$stmt->bind_param("iss", $new_age, $first, $last);
$stmt->execute();

5. 事務控制(多表關聯更新時)

$mysqli->begin_transaction();
try {
    $mysqli->query("UPDATE accounts SET balance = balance - 100 WHERE id = 1");
    $mysqli->query("UPDATE accounts SET balance = balance + 100 WHERE id = 2");
    $mysqli->commit();
} catch (Exception $e) {
    $mysqli->rollback();
}

四、 常見錯誤與避坑指南

錯誤現象原因修正
全表數據被誤改漏寫 WHERE 條件養成「先寫 SELECT 驗證條件,再改 UPDATE」習慣
更新 0 行WHERE 條件不匹配任何行先執行 SELECT 驗證條件是否命中目標行
字段值變 NULL子查詢返回 NULL 且無默認值用 COALESCE/IFNULL 提供默認值
死鎖/鎖等待超時大事務長時間持有行鎖縮小事務範圍、分批提交、按主鍵順序更新

五、 總結

UPDATE 雖語法簡單,但**條件控制、注入防護、事務一致性**是生產環境核心要求。牢記:永遠先 SELECT 驗證 WHERE 條件,使用預處理語句,關鍵業務包裹事務,即可安全高效完成數據修改。

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