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

MySQL UPDATE 語句更新數據全攻略:語法、多條件、PHP 實現與避坑指南

     編輯:MySQL 綜合教學

UPDATE 基礎語法

UPDATE table_name 
SET column_name = new_value 
WHERE column_name = some_value
  • WHERE 同樣至關重要: 缺失將更新全表所有行。
  • 多欄位更新: `SET col1=val1, col2=val2, ...`
  • 多條件組合: `WHERE condition1 AND condition2`
  • PHP 完整範例

    $con = mysql_connect("localhost", "peter", "abc123");
    if (!$con) die('Could not connect: ' . mysql_error());
    
    mysql_select_db("my_db", $con);
    
    // 將 Peter Griffin 年齡更新為 36
    $sql = "UPDATE Person SET Age = '36' 
            WHERE FirstName = 'Peter' AND LastName = 'Griffin'";
    mysql_query($sql, $con);
    
    mysql_close($con);
    

    核心避坑指南

    風險場景後果防範措施
    忘寫 WHERE全表數據被覆蓋強制習慣:先寫 WHERE 再寫 SET
    字符串未加引號語法錯誤或誤更新數值型不加引號,字符/日期型必須加單引號
    大量更新鎖表業務阻塞、主從延遲分批更新、低峰期執行、pt-online-schema-change
    子查詢性能差執行極慢改用 JOIN 更新或應用層分步處理

    多表更新語法(MySQL 特有)

    -- 內連接更新
    UPDATE table1 t1
    INNER JOIN table2 t2 ON t1.id = t2.t1_id
    SET t1.col = t2.col
    WHERE t1.status = 1;
    
    -- 逗號語法(舊風格,不推薦)
    UPDATE table1 t1, table2 t2
    SET t1.col = t2.col
    WHERE t1.id = t2.t1_id;
    

    遷移至 mysqli/PDO 預處理

    $stmt = $pdo->prepare("UPDATE Person SET Age = ? WHERE FirstName = ? AND LastName = ?");
    $stmt->execute([36, 'Peter', 'Griffin']);
    echo "影響行數: " . $stmt->rowCount();
    
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved