Kết nối PHP với MySQL là bước cơ bản nhưng rất quan trọng trong việc phát triển các ứng dụng web động. PHP cung cấp hai cách chính để kết nối với cơ sở dữ liệu MySQL:

  1. mysqli (MySQL Improved Extension): Hỗ trợ cả hai mô hình lập trình hướng thủ tục và hướng đối tượng, dành riêng cho MySQL.
  2. PDO (PHP Data Objects): Hỗ trợ nhiều hệ quản trị cơ sở dữ liệu khác nhau, không chỉ MySQL.

Trong bài viết này, chúng ta sẽ tìm hiểu cách kết nối MySQL bằng cả hai phương pháp mysqliPDO.

1. Kết nối MySQL bằng mysqli

a) Sử dụng hướng đối tượng

Cách tiếp cận này sử dụng các phương thức của class mysqli để kết nối và thao tác với cơ sở dữ liệu.

Ví dụ:

php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "my_database";

// Tạo kết nối
$conn = new mysqli($servername, $username, $password, $dbname);

// 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!";

b) Sử dụng hướng thủ tục

Trong cách tiếp cận này, chúng ta sử dụng các hàm thủ tục mysqli_connect() để kết nối với cơ sở dữ liệu.

Ví dụ:

php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "my_database";

// Tạo kết nối
$conn = mysqli_connect($servername, $username, $password, $dbname);

// Kiểm tra kết nối
if (!$conn) {
    die("Kết nối thất bại: " . mysqli_connect_error());
}
echo "Kết nối thành công!";

c) Đóng kết nối

Sau khi hoàn thành các truy vấn, nên đóng kết nối để giải phóng tài nguyên.

php
$conn->close();  // Hướng đối tượng
// hoặc
mysqli_close($conn);  // Hướng thủ tục

2. Kết nối MySQL bằng PDO

PDO (PHP Data Objects) là một class trong PHP cung cấp giao diện hướng đối tượng để kết nối với nhiều cơ sở dữ liệu, bao gồm MySQL.

Cách kết nối bằng PDO

Ví dụ:

php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "my_database";

try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // Cài đặt chế độ lỗi PDO thành Exception
    $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();
}

Đóng kết nối PDO

Để đóng kết nối PDO, bạn chỉ cần gán biến $conn thành null.

php
$conn = null;

3. So sánh mysqliPDO

Đặc điểmmysqliPDO
Hỗ trợ nhiều CSDLChỉ hỗ trợ MySQLHỗ trợ nhiều hệ quản trị CSDL (MySQL, SQLite, PostgreSQL, v.v.)
Kiểu truy vấnHỗ trợ truy vấn hướng thủ tục và hướng đối tượngChỉ hỗ trợ hướng đối tượng
Prepared StatementsCó hỗ trợCó hỗ trợ
Bảo mật SQL InjectionCó hỗ trợCó hỗ trợ
Khả năng di chuyển mãChỉ dùng được cho MySQLDễ dàng chuyển đổi giữa các hệ quản trị CSDL

Khi nào nên sử dụng mysqli?

  • Nếu bạn chỉ làm việc với MySQL và cần một API đơn giản hơn, mysqli là lựa chọn tốt.
  • mysqli có thể sử dụng cả hai cách tiếp cận hướng đối tượng và hướng thủ tục.

Khi nào nên sử dụng PDO?

  • Nếu bạn làm việc với nhiều hệ quản trị cơ sở dữ liệu khác nhau, hoặc muốn dễ dàng chuyển đổi giữa các cơ sở dữ liệu.
  • PDO là lựa chọn tốt cho các dự án lớn với yêu cầu hỗ trợ nhiều loại cơ sở dữ liệu.

4. Kết luận

Kết nối PHP với MySQL có thể được thực hiện một cách dễ dàng bằng cách sử dụng mysqli hoặc PDO. Cả hai đều cung cấp các tính năng quan trọng như Prepared Statements để tránh SQL Injection và đều có khả năng tương tác với cơ sở dữ liệu MySQL.

  • mysqli: Phù hợp nếu bạn chỉ cần làm việc với MySQL và thích sử dụng mô hình lập trình hướng thủ tục hoặc hướng đối tượng.
  • PDO: Hỗ trợ đa dạng hơn và dễ dàng chuyển đổi giữa các hệ quản trị cơ sở dữ liệu khác nhau, thích hợp cho các dự án lớn.

Hãy lựa chọn phương pháp phù hợp với nhu cầu của bạn!