1. Lệnh Update là gì?

Các câu lệnh Update được sử dụng để thay đổi hoặc sửa đổi các bản ghi hiện có trong một bảng CSDL. Cũng tương tự như các bài trước ta học về thêm, xem hay là lấy dữ liệu trong MySQL rồi thì nay là việc sử dữ liệu. Đây cũng là thao tác hay được sử dụng nhất trong MySQL lẫn PHP. Đây cũng là thao tác được dùng trong backend dùng để sửa thông tin sản phẩm, tin tức,…

Giả sử ta lên một website nào đó thay đổi thông tin tài khoản(mật khẩu, tên hiển thị,…). Lúc này thực chất là việc ta nhập thông tin và gửi truy vấn đến CSDL để yêu cầu cập nhật lại thông tin theo thay đổi của người dùng. Hoặc thực hiện những thay đổi gì mà cần thay dữ liệu trên bảng CSDL thì cũng cần đến việc Update. Câu lệnh này thường được sử dụng trong cách kết hợp với mệnh đề WHERE để chỉ áp dụng các thay đổi cho những bản ghi phù hợp với tiêu chí cụ thể.

Cú pháp cơ bản:

UPDATE TEN_BANG
SET cot1 = gtri1, cot2 = gtri2...., cotN = gtriN
WHERE [DIEU_KIEN];

Lưu ý

  • Mệnh đề WHERE chỉ định bản ghi nào hoặc các bản ghi cần được cập nhật. Nếu bạn bỏ qua mệnh đề WHERE, tất cả các bản ghi sẽ được cập nhật! ở đây thì thông thường ta cũng lấy điều kiện theo khóa chính.
  • Nếu muốn sử dụng nhiều hơn thì ta sử dụng toán tử AND hoặc OR.

2. Update dữ liệu với MySQLi

Tương tự như bài học trước mình sẽ đưa ra những ví dụ cụ thể luôn cho các bạn dễ hiểu nhé. Chúng ta sẽ tạo một truy vấn SQL bằng cách sử dụng câu lệnh UPDATE và mệnh đề WHERE, sau đó chúng ta sẽ thực hiện truy vấn này thông qua việc chuyển nó đến hàm mysqli_query() của PHP để cập nhật các bản ghi trên bảng CSDL. Ta xem bảng persons trong CSDL db_lttd:

ID Name Age Address Salary
1 Thành 17 Hà Nội 4000$
2 Nam 21 Đà Nẵng 6400$
3 Sơn 18 Cà Mau 3200$
4 Hòa 20 Phúc Thọ 5000$

2.1. Sử dụng MySQLi hướng thủ tục

<?php
/* Cố gắng kết nối tới MySQL Server. Giả sử bạn đang chạy MySQL Server với thiết lập mặc định (user 'root' và không có mật khẩu)*/
$link = mysqli_connect("localhost", "root", "", "db_lttd");
// Kiểm tra kết nối
if($link === false){
die("ERROR: Không thể kết nối.". mysqli_connect_error());
}
// Thực thi câu lệnh UPDATE
$sql = "UPDATE persons SET email='thanh@gmail.com' WHERE id=1";
if(mysqli_query($link, $sql)){
echo "Bản ghi được cập nhật thành công";
}else{
echo "ERROR: Không thể cập nhật bản ghi $sql".mysqli_error($link);
}
// Đóng kết nối
mysqli_close($link);
?>

2.2. Sử dụng MySQLi hướng đối tượng

<?php
/* Cố gắng kết nối tới MySQL Server. Giả sử bạn đang chạy MySQL Server với thiết lập mặc định (user 'root' và không có mật khẩu)*/
$mysqli = new mysqli("localhost", "root", "", "db_lttd");
// Kiểm tra kết nối
if($link === false){
    die("ERROR: Không thể kết nối.". $mysqli->connect_error);
}
// Thực thi câu lệnh UPDATE
$sql = "UPDATE persons SET email='thanh@gmail.com' WHERE id=1";
if($mysqli->query($sql) === true{
    echo "Bản ghi được cập nhật thành công";
}else{
    echo "ERROR: Không thể cập nhật bản ghi $sql. " .$mysqli->error;
}
// Đóng kết nối
$mysqli->close();
?>

3. Update dữ liệu với PDO

<?php
/* Cố gắng kết nối tới MySQL Server. Giả sử bạn đang chạy MySQL Server với thiết lập mặc định (user 'root' và không có mật khẩu)*/
try{
    $pdo = new PDO("mysql:host=localhost;dbname=db_lttd", "root", "");
    // Thiết lập chế độ PDO ERROR thành Ngoại lệ
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("ERROR: Không thể kết nối. " . $e->getMessage());
}

// Thực thi câu lệnh UPDATE
try{
    $sql = "UPDATE persons SET email='thanh@gmail.com' WHERE id=1";    
    $pdo->exec($sql);
    echo "Cập nhật bản ghi thành công.";
} catch(PDOException $e){
    die("ERROR: Không thể thực thi truy $sql. " . $e->getMessage());
}
// Đóng kết nối
unset($pdo);
?>