PHP và MySQL – Kết nối với cơ sở dữ liệu

Kết nối theo mysqli

Để kết nối PHP với MySQL bằng cách sử dụng mysqli, bạn có thể thực hiện theo các bước dưới đây:

Bước 1: Kết nối tới MySQL

Bạn cần cung cấp thông tin kết nối, bao gồm tên máy chủ (thường là localhost), tên người dùng, mật khẩu, và tên cơ sở dữ liệu.

Bước 2: Thực hiện truy vấn

Sau khi kết nối thành công, bạn có thể sử dụng đối tượng mysqli để thực hiện các truy vấn SQL.

Bước 3: Xử lý kết quả

Kết quả của truy vấn có thể được lấy ra dưới dạng bảng dữ liệu, bạn có thể lặp qua các hàng trong bảng này và xử lý chúng theo yêu cầu.

Bước 4: Đóng kết nối

Cuối cùng, sau khi hoàn tất, hãy đóng kết nối để giải phóng tài nguyên.

Ví dụ cơ bản sử dụng mysqli:

<?php
// Thông tin kết nối
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "database_name";

// 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);
}

// Thực hiện truy vấn
$sql = "SELECT id, name FROM users";
$result = $conn->query($sql);

// Kiểm tra và xử lý kết quả
if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "ID: " . $row["id"]. " - Tên: " . $row["name"]. "<br>";
    }
} else {
    echo "Không có kết quả";
}

// Đóng kết nối
$conn->close();
?>

Giải thích chi tiết:

  1. Kết nối tới MySQL:
  • new mysqli($servername, $username, $password, $dbname);: Dòng này tạo một kết nối mới tới MySQL.
  • Nếu kết nối thất bại, chương trình sẽ dừng lại với thông báo lỗi.
  1. Thực hiện truy vấn:
  • query($sql);: Hàm này dùng để thực hiện một truy vấn SQL trên cơ sở dữ liệu.
  • Trong ví dụ này, truy vấn sẽ chọn tất cả các bản ghi từ bảng users với hai cột là idname.
  1. Xử lý kết quả:
  • fetch_assoc();: Lấy từng hàng kết quả dưới dạng mảng liên kết, giúp bạn dễ dàng truy cập vào các cột bằng cách sử dụng tên cột.
  1. Đóng kết nối:
  • close();: Sau khi hoàn tất công việc, bạn nên đóng kết nối để giải phóng tài nguyên.

Kết nối theo PDO

Để kết nối PHP với MySQL sử dụng PDO (PHP Data Objects), bạn có thể thực hiện theo các bước dưới đây:

Bước 1: Kết nối tới MySQL

Bạn cần cung cấp thông tin kết nối, bao gồm tên máy chủ, tên cơ sở dữ liệu, tên người dùng và mật khẩu. PDO hỗ trợ kết nối không chỉ với MySQL mà còn với nhiều loại cơ sở dữ liệu khác.

Bước 2: Thực hiện truy vấn

Sau khi kết nối thành công, bạn có thể sử dụng phương thức PDO để thực hiện các truy vấn SQL.

Bước 3: Xử lý kết quả

Kết quả truy vấn có thể được lấy ra và xử lý dưới dạng các mảng hoặc đối tượng.

Bước 4: Đóng kết nối

Kết nối PDO tự động đóng khi kịch bản kết thúc, nhưng bạn cũng có thể làm điều này thủ công nếu cần thiết.

Ví dụ cơ bản sử dụng PDO:

<?php
// Thông tin kết nối
$servername = "localhost";
$dbname = "database_name";
$username = "username";
$password = "password";

try {
    // Tạo kết nối PDO
    $conn = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8", $username, $password);

    // Thiết lập chế độ lỗi cho PDO
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // Thực hiện truy vấn
    $sql = "SELECT id, name FROM users";
    $stmt = $conn->prepare($sql);
    $stmt->execute();

    // Thiết lập chế độ lấy kết quả dưới dạng mảng liên kết
    $result = $stmt->fetchAll(PDO::FETCH_ASSOC);

    // Xử lý và hiển thị kết quả
    if ($stmt->rowCount() > 0) {
        foreach ($result as $row) {
            echo "ID: " . $row["id"]. " - Tên: " . $row["name"]. "<br>";
        }
    } else {
        echo "Không có kết quả";
    }
} catch(PDOException $e) {
    echo "Lỗi kết nối: " . $e->getMessage();
}

// Đóng kết nối (không cần thiết vì PDO tự động đóng, nhưng có thể thực hiện thủ công)
$conn = null;
?>

Giải thích chi tiết:

  1. Kết nối tới MySQL:
  • new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8", $username, $password);: Dòng này tạo một kết nối mới tới MySQL sử dụng PDO.
  • setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);: Thiết lập chế độ lỗi để PDO ném ra ngoại lệ nếu có lỗi xảy ra.
  1. Thực hiện truy vấn:
  • prepare($sql);: Hàm này chuẩn bị một truy vấn SQL để thực hiện. Điều này giúp bảo vệ chống lại SQL Injection.
  • execute();: Thực thi truy vấn đã chuẩn bị trước đó.
  1. Xử lý kết quả:
  • fetchAll(PDO::FETCH_ASSOC);: Lấy tất cả các hàng kết quả dưới dạng mảng liên kết, giúp bạn dễ dàng truy cập vào các cột bằng cách sử dụng tên cột.
  1. Đóng kết nối:
  • null;: Gán kết nối bằng null để đóng kết nối thủ công. Tuy nhiên, khi script kết thúc, PDO tự động đóng kết nối, vì vậy thao tác này không bắt buộc.

PDO là một phương pháp linh hoạt và an toàn để kết nối và làm việc với cơ sở dữ liệu trong PHP.

Ví dụ thực tế

<?php
define('DB_NAME', 'shop11111');
define('DB_USER', 'root');
define('DB_USER_PASS', '');

function get_pdo(){
    $pdo = null;
    try {
        $pdo = new PDO("mysql:host=localhost;dbname=" . DB_NAME, DB_USER, DB_USER_PASS);     
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    } 
    catch (PDOException $e) {
        echo "Kết nối thất bại: " . $e->getMessage();
    }

    return $pdo;
}

?>