Thao tác CRUD và Bảo mật với MySQL
Tạo bởi Hoàng Vũ, chỉnh sửa cuối lúc 27 tháng 2, 2025
Trong bài học này, chúng ta sẽ tìm hiểu cách thao tác với MySQL từ PHP, bao gồm các chức năng CRUD (Create, Read, Update, Delete). Bên cạnh đó, chúng ta sẽ tìm hiểu về Prepared Statements để phòng chống SQL Injection và những biện pháp bảo mật khi làm việc với CSDL.

1. Thao tác CRUD và Bảo mật với MySQL
1.1 Thêm dữ liệu (Create)
Sử dụng MySQLi
$sql = "INSERT INTO users (name, email) VALUES ('Nguyen Van A', 'nguyenvana@example.com')";
if ($conn->query($sql) === TRUE) {
echo "Thêm dữ liệu thành công";
} else {
echo "Lỗi: " . $conn->error;
}
Sử dụng PDO (Prepared Statements)
$stmt = $conn->prepare("INSERT INTO users (name, email) VALUES (:name, :email)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':email', $email);
$name = "Nguyen Van B";
$email = "nguyenvanb@example.com";
$stmt->execute();
echo "Thêm dữ liệu thành công";
1.2 Đọc dữ liệu (Read)
MySQLi
$sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);
while($row = $result->fetch_assoc()) {
echo "ID: " . $row["id"] . " - Name: " . $row["name"] . " - Email: " . $row["email"] . "<br>";
}
PDO
$stmt = $conn->prepare("SELECT id, name, email FROM users");
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($result as $row) {
echo "ID: " . $row["id"] . " - Name: " . $row["name"] . " - Email: " . $row["email"] . "<br>";
}
1.3 Cập nhật dữ liệu (Update)
MySQLi
$sql = "UPDATE users SET email='newemail@example.com' WHERE id=1";
if ($conn->query($sql) === TRUE) {
echo "Cập nhật thành công";
} else {
echo "Lỗi: " . $conn->error;
}
PDO (Prepared Statements)
$stmt = $conn->prepare("UPDATE users SET email = :email WHERE id = :id");
$stmt->bindParam(':email', $email);
$stmt->bindParam(':id', $id);
$email = "newemail@example.com";
$id = 1;
$stmt->execute();
echo "Cập nhật thành công";
1.4 Xoá dữ liệu (Delete)
MySQLi
$sql = "DELETE FROM users WHERE id=1";
if ($conn->query($sql) === TRUE) {
echo "Xoá thành công";
} else {
echo "Lỗi: " . $conn->error;
}
PDO (Prepared Statements)
$stmt = $conn->prepare("DELETE FROM users WHERE id = :id");
$stmt->bindParam(':id', $id);
$id = 1;
$stmt->execute();
echo "Xoá thành công";
1.5 Bảo mật khi thao tác với CSDL
- Sử dụng Prepared Statements để tránh SQL Injection.
- Hạn chế quyền truy cập của user database, không dùng tài khoản root.
-
Lọc và kiểm tra dữ liệu đầu vào bằng
filter_var()
. -
Mã hóa mật khẩu khi lưu vào database bằng
password_hash()
. - Bật chế độ lỗi trong PDO để bắt lỗi khi xảy ra lỗi truy vấn.
2. Kết luận
- Cách thực hiện các thao tác CRUD với MySQL từ PHP.
- Sử dụng MySQLi và PDO để quản lý dữ liệu.
- Các biện pháp bảo mật để bảo vệ CSDL khỏi các cuộc tấn công.

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.
Xem thêm

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.
Liên hệ công việc qua email dưới đây.
lhvuctu@gmail.com