Trong hành trình học lập trình web, khi đến phần kết nối cơ sở dữ liệu, bạn sẽ thấy có nhiều cách để tương tác với MySQL từ PHP như mysqli
, mysql
(đã lỗi thời), và một lựa chọn hiện đại hơn – PDO
(PHP Data Objects). Bài học hôm nay sẽ giúp bạn hiểu rõ PDO là gì, vì sao nên dùng, và cách sử dụng PDO để thực thi truy vấn SQL một cách an toàn và hiệu quả.
PDO là gì?
PDO là một lớp (class) trong PHP cung cấp cách chuẩn hóa để kết nối với nhiều loại CSDL như MySQL, PostgreSQL, SQLite… Điểm mạnh của PDO là:
- Bảo mật cao: hỗ trợ sẵn cơ chế Prepared Statement để chống SQL Injection.
- Tái sử dụng được: bạn có thể dễ dàng chuyển đổi giữa các CSDL khác nhau mà không phải viết lại toàn bộ code.
- Linh hoạt & hiện đại: cú pháp rõ ràng, dễ quản lý lỗi hơn so với cách cũ.
Kết nối cơ sở dữ liệu bằng PDO
<?php
$host = 'localhost';
$dbname = 'my_database';
$username = 'root';
$password = '';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
// Thiết lập chế độ báo lỗi
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Kết nối thành công!";
} catch (PDOException $e) {
echo "Kết nối thất bại: " . $e->getMessage();
}
?>
Bạn nên luôn sử dụng
try...catch
để xử lý lỗi khi kết nối với PDO.
Truy vấn dữ liệu (SELECT)
Ví dụ 1: Truy vấn dữ liệu đơn giản
$stmt = $pdo->query("SELECT * FROM users");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo $row['username'] . "<br>";
}
Ví dụ 2: Truy vấn có điều kiện với Prepared Statement
$sql = "SELECT * FROM users WHERE email = :email";
$stmt = $pdo->prepare($sql);
$stmt->execute(['email' => 'test@example.com']);
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if ($user) {
echo "Tên người dùng: " . $user['username'];
}
Thêm dữ liệu (INSERT)
$sql = "INSERT INTO users (username, email) VALUES (:username, :email)";
$stmt = $pdo->prepare($sql);
$stmt->execute([
'username' => 'johnny',
'email' => 'johnny@example.com'
]);
echo "Thêm thành công!";
Cập nhật và xóa
// UPDATE
$sql = "UPDATE users SET email = :email WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute([
'email' => 'new@example.com',
'id' => 5
]);
// DELETE
$sql = "DELETE FROM users WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->execute(['id' => 5]);
Một số mẹo hữu ích
- Sử dụng
PDO::FETCH_OBJ
để truy cập kết quả như object:$row = $stmt->fetch(PDO::FETCH_OBJ); echo $row->email;
- Kiểm tra số dòng ảnh hưởng:
if ($stmt->rowCount() > 0) { echo "Cập nhật thành công!"; }
Tổng kết
Việc sử dụng PDO trong PHP mang lại cho bạn:
- Bảo mật nhờ tránh SQL injection với
prepare()
- Tái sử dụng và linh hoạt hơn nếu sau này thay đổi CSDL
- Code gọn gàng, chuyên nghiệp và dễ bảo trì hơn
Trong các ứng dụng thực tế, PDO là lựa chọn hàng đầu bạn nên sử dụng khi làm việc với cơ sở dữ liệu trong PHP. Bài tiếp theo, chúng ta sẽ vận dụng kỹ năng này trong một mini project đơn giản.
👉 Bài tiếp theo: Mini Project – Xây dựng form đăng ký người dùng với PDO.
Thảo luận