Kết nối PHP với MySQL & Truy vấn dữ liệu

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 kết nối PHP với MySQL bằng MySQLi và PDO, cách thực hiện truy vấn dữ liệu cơ bản và xử lý lỗi khi kết nối CSDL. Sau bài học, học viên sẽ có thể lấy dữ liệu từ MySQL và hiển thị lên trang web.

1. Kết nối PHP với MySQL & Truy vấn dữ liệu

1.1 Kết nối MySQL bằng MySQLi và PDO

Kết nối bằng MySQLi (hướng đối tượng)

  • MySQLi hỗ trợ cả phương pháp hướng đối tượng và thủ tục, nhưng trong bài này, chúng ta sẽ tập trung vào hướng đối tượng.
  • Để kết nối với MySQL, cần có các thông tin sau: hostname, username, password, database.

Ví dụ kết nối MySQL bằng MySQLi:

$servername = "localhost";
$username = "root";
$password = "";
$database = "example_db";

$conn = new mysqli($servername, $username, $password, $database);

// Kiểm tra kết nối
if ($conn->connect_error) {
    die("Kết nối thất bại: " . $conn->connect_error);
}

echo "Kết nối thành công";

Kết nối bằng PDO

  • PDO (PHP Data Objects) hỗ trợ nhiều hệ quản trị CSDL khác nhau và cung cấp bảo mật tốt hơn.

Ví dụ kết nối MySQL bằng PDO:

try {
    $conn = new PDO("mysql:host=localhost;dbname=example_db", "root", "");
    $conn->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();
}

1.2 Truy vấn dữ liệu (SELECT) và hiển thị kết quả

Sử dụng MySQLi

  • Sau khi kết nối thành công, có thể sử dụng truy vấn SQL để lấy dữ liệu từ bảng.
  • Sử dụng phương thức query() để thực hiện câu lệnh SELECT.
  • Duyệt dữ liệu bằng vòng lặp while và phương thức fetch_assoc().

Ví dụ truy vấn dữ liệu với MySQLi:

$sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
    }
} else {
    echo "Không có kết quả";
}

Sử dụng PDO

  • PDO sử dụng prepare() để tạo câu truy vấn an toàn.
  • Sử dụng fetchAll(PDO::FETCH_ASSOC) để lấy tất cả dữ liệu dưới dạng mảng kết hợp.

Ví dụ truy vấn dữ liệu với 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 Xử lý lỗi khi kết nối CSDL

  • MySQLi: Kiểm tra lỗi bằng $conn->connect_error.
  • PDO: Dùng try...catch để bắt lỗi.
  • Hiển thị lỗi: Bật error_reporting(E_ALL) để thấy lỗi khi lập trình.

Ví dụ xử lý lỗi với MySQLi:

if ($conn->connect_error) {
    die("Lỗi kết nối MySQLi: " . $conn->connect_error);
}

Ví dụ xử lý lỗi với PDO:

try {
    $conn = new PDO("mysql:host=localhost;dbname=example_db", "root", "");
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    echo "Lỗi kết nối PDO: " . $e->getMessage();
}

2. Kết luận

  • Cách kết nối PHP với MySQL bằng MySQLi và PDO.
  • Cách thực hiện truy vấn dữ liệu và hiển thị kết quả.
  • Cách xử lý lỗi khi kết nối đến CSDL.
Website Logo

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.

Bình luận

Website Logo

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

Chúng Tôi Trên

Bạn đang muốn học về lập trình website?

Bạn cần nâng cao kiến thức chuyên nghiệp hơn để nâng cao cơ hội nghề nghiệp? Liên hệ