Để tích hợp MySQL với PHP, bạn có thể sử dụng các phương pháp sau đây:

  1. Sử dụng MySQLi (MySQL Improved):
    • MySQLi là một API được phát triển để làm việc với MySQL và được tích hợp sẵn trong PHP. Nó có thể sử dụng theo hai cách: hướng đối tượnghướng thủ tục.
  2. Sử dụng PDO (PHP Data Objects):
    • PDO là một API hướng đối tượng hỗ trợ nhiều hệ quản trị cơ sở dữ liệu khác nhau (bao gồm MySQL). Nó cung cấp một lớp trừu tượng cho các thao tác cơ sở dữ liệu.

Dưới đây là hướng dẫn chi tiết về cả hai cách:

1. Tích hợp MySQL với PHP bằng MySQLi

a. Kết nối cơ sở dữ liệu

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

// Tạo kết nối (hướng đối tượng)
$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. Thực hiện truy vấn (SELECT)

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

if ($result->num_rows > 0) {
    // Xuất dữ liệu
    while($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"]. " - Name: " . $row["name"]. "";
    }
} else {
    echo "0 kết quả";
}

c. Chèn dữ liệu (INSERT)

$sql = "INSERT INTO users (name, email) VALUES ('John Doe', '[email protected]')";

if ($conn->query($sql) === TRUE) {
    echo "Thêm dữ liệu thành công!";
} else {
    echo "Lỗi: " . $sql . "" . $conn->error;
}

d. Đóng kết nối

$conn->close();

2. Tích hợp MySQL với PHP bằng PDO

a. Kết nối cơ sở dữ liệu

<?php
$dsn = 'mysql:host=localhost;dbname=my_database';
$username = 'root';
$password = '';

try {
    // Tạo kết nối PDO
    $pdo = new PDO($dsn, $username, $password);
    // Thiết lập PDO để ném lỗi ngoại lệ (Exception)
    $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. Thực hiện truy vấn (SELECT)

$sql = 'SELECT id, name FROM users';
$stmt = $pdo->query($sql);

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo "ID: " . $row['id'] . " - Name: " . $row['name'] . "";
}

c. Chèn dữ liệu (INSERT)

$sql = "INSERT INTO users (name, email) VALUES (:name, :email)";
$stmt = $pdo->prepare($sql);

// Thêm dữ liệu với giá trị ràng buộc
$stmt->execute(['name' => 'Jane Doe', 'email' => '[email protected]']);
echo "Dữ liệu đã được thêm thành công!";

d. Đóng kết nối

Kết nối PDO sẽ tự động được đóng khi tập lệnh kết thúc hoặc khi đối tượng $pdo không còn được sử dụng nữa. Tuy nhiên, bạn có thể tự đóng kết nối bằng cách đặt giá trị null:

$pdo = null;

3. So sánh MySQLi và PDO

Tiêu chí MySQLi PDO
Cơ sở dữ liệu hỗ trợ Chỉ hỗ trợ MySQL Hỗ trợ nhiều loại CSDL (MySQL, PostgreSQL, SQLite,…)
Hướng lập trình Hướng đối tượng và thủ tục Chỉ hướng đối tượng
Prepared Statements
Truy vấn đa dạng Hỗ trợ đầy đủ Linh hoạt hơn

4. Chọn MySQLi hay PDO?

  • 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.
  • Sử dụng PDO nếu bạn muốn một giải pháp linh hoạt, có thể dễ dàng chuyển đổi giữa các cơ sở dữ liệu khác mà không phải thay đổi nhiều mã.

Kết luận

Cả MySQLi và PDO đều là những lựa chọn tốt để tích hợp MySQL với PHP. Tuy nhiên, PDO cung cấp sự linh hoạt hơn và hỗ trợ nhiều hệ quản trị cơ sở dữ liệu khác nhau, trong khi MySQLi chỉ hỗ trợ MySQL.