Các hàm làm việc với MySQL trong PHP

Trong quá trình phát triển ứng dụng web, việc tương tác với cơ sở dữ liệu là một trong những nhiệm vụ quan trọng và thường xuyên nhất. PHP, một trong những ngôn ngữ lập trình phổ biến nhất, hỗ trợ mạnh mẽ việc thao tác với MySQL thông qua các hàm tích hợp. Bài viết này sẽ trình bày chi tiết về các hàm xử lý MySQL trong PHP và cung cấp ví dụ cụ thể để bạn hiểu rõ hơn cách chúng hoạt động.

Các hàm làm việc với MySQL trong PHP
Các hàm làm việc với MySQL trong PHP

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

Để bắt đầu làm việc với MySQL trong PHP, trước tiên chúng ta cần thiết lập kết nối với cơ sở dữ liệu MySQL. PHP cung cấp một số hàm để thực hiện điều này, với mysqli_connect() là hàm được sử dụng phổ biến nhất trong các dự án hiện đại.

Sử dụng hàm mysqli_connect()

Hàm mysqli_connect() giúp bạn kết nối tới một cơ sở dữ liệu MySQL. Cú pháp của hàm như sau:


mysqli_connect(host, username, password, dbname, port, socket);

Các tham số:

Dưới đây là ví dụ về cách sử dụng mysqli_connect() để kết nối tới cơ sở dữ liệu:


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

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

Trong ví dụ trên, chúng ta sử dụng mysqli_connect() để kết nối tới cơ sở dữ liệu có tên mydatabase trên máy chủ localhost với tên người dùng root và không có mật khẩu.

Đóng kết nối cơ sở dữ liệu

Sau khi hoàn tất các thao tác với cơ sở dữ liệu, việc đóng kết nối là cần thiết để giải phóng tài nguyên. PHP cung cấp hàm mysqli_close() để thực hiện điều này.

Sử dụng hàm mysqli_close()

Cú pháp:


mysqli_close(connection);

Tham số connection là kết nối mà bạn muốn đóng. Ví dụ:


<?php
// Đóng kết nối
mysqli_close($conn);
?>

Trong trường hợp không sử dụng mysqli_close(), PHP sẽ tự động đóng kết nối khi script kết thúc, nhưng việc đóng kết nối thủ công vẫn được khuyến khích để đảm bảo tối ưu hóa tài nguyên.

Thực hiện truy vấn SQL

Sau khi kết nối thành công với cơ sở dữ liệu, bước tiếp theo là thực hiện các truy vấn SQL. Hàm mysqli_query() được sử dụng để gửi câu lệnh SQL tới cơ sở dữ liệu.

Sử dụng hàm mysqli_query()

Cú pháp:


mysqli_query(connection, query);

Tham số:

Ví dụ thực hiện một truy vấn INSERT để thêm dữ liệu vào bảng:


<?php
$sql = "INSERT INTO users (username, email) VALUES ('john_doe', '[email protected]')";

if (mysqli_query($conn, $sql)) {
    echo "Thêm dữ liệu thành công";
} else {
    echo "Lỗi: " . $sql . "<br>" . mysqli_error($conn);
}
?>

Trong ví dụ này, chúng ta thực hiện một truy vấn INSERT để thêm người dùng mới vào bảng users. Nếu thành công, thông báo "Thêm dữ liệu thành công" sẽ được hiển thị, ngược lại, thông báo lỗi sẽ được in ra.

Lấy dữ liệu từ cơ sở dữ liệu

Khi bạn muốn lấy dữ liệu từ cơ sở dữ liệu, bạn có thể sử dụng các câu lệnh SELECT và xử lý kết quả thông qua các hàm như mysqli_fetch_assoc() hoặc mysqli_fetch_array().

Sử dụng hàm mysqli_fetch_assoc()

Hàm mysqli_fetch_assoc() trả về một hàng dữ liệu dưới dạng một mảng kết hợp, trong đó các khóa của mảng là tên cột trong bảng cơ sở dữ liệu.

Ví dụ:


<?php
$sql = "SELECT username, email FROM users";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    // Lấy dữ liệu từng hàng
    while($row = mysqli_fetch_assoc($result)) {
        echo "Username: " . $row["username"] . " - Email: " . $row["email"] . "<br>";
    }
} else {
    echo "Không có dữ liệu";
}
?>

Trong ví dụ trên, chúng ta truy vấn tất cả người dùng từ bảng users và sử dụng mysqli_fetch_assoc() để duyệt qua kết quả và in ra từng dòng dữ liệu.

Cập nhật dữ liệu trong cơ sở dữ liệu

Bạn có thể sử dụng câu lệnh UPDATE để cập nhật dữ liệu trong cơ sở dữ liệu. Hàm mysqli_query() cũng được sử dụng để thực hiện các truy vấn cập nhật.

Ví dụ cập nhật dữ liệu


<?php
$sql = "UPDATE users SET email='[email protected]' WHERE username='john_doe'";

if (mysqli_query($conn, $sql)) {
    echo "Cập nhật thành công";
} else {
    echo "Lỗi cập nhật: " . mysqli_error($conn);
}
?>

Trong ví dụ trên, chúng ta thực hiện một truy vấn UPDATE để cập nhật email của người dùng có tên john_doe. Nếu câu lệnh thành công, PHP sẽ in ra thông báo "Cập nhật thành công".

Xóa dữ liệu trong cơ sở dữ liệu

Tương tự như việc thêm và cập nhật, bạn có thể sử dụng câu lệnh DELETE để xóa dữ liệu khỏi cơ sở dữ liệu.

Ví dụ xóa dữ liệu


<?php
$sql = "DELETE FROM users WHERE username='john_doe'";

if (mysqli_query($conn, $sql)) {
    echo "Xóa thành công";
} else {
    echo "Lỗi xóa: " . mysqli_error($conn);
}
?>

Ví dụ trên xóa người dùng có tên john_doe khỏi bảng users. Nếu quá trình xóa thành công, một thông báo sẽ được hiển thị.

Truy vấn có điều kiện với Prepared Statements

Để bảo mật hơn khi làm việc với dữ liệu từ người dùng, bạn nên sử dụng Prepared Statements (Câu lệnh chuẩn bị) để ngăn chặn các cuộc tấn công SQL Injection. PHP hỗ trợ điều này thông qua hàm mysqli_prepare().

Sử dụng Prepared Statements


<?php
// Chuẩn bị câu lệnh
$stmt = mysqli_prepare($conn, "INSERT INTO users (username, email) VALUES (?, ?)");

// Gán giá trị cho các tham số
mysqli_stmt_bind_param($stmt, "ss", $username, $email);

$username = 'jane_doe';
$email = '[email protected]';

// Thực thi câu lệnh
mysqli_stmt_execute($stmt);

echo "Thêm người dùng thành công";
?>

Trong ví dụ này, chúng ta sử dụng Prepared Statements để thêm một người dùng mới vào cơ sở dữ liệu, đảm bảo rằng các giá trị đầu vào từ người dùng được xử lý một cách an toàn, tránh được các lỗ hổng bảo mật.

Kết luận

Việc sử dụng các hàm MySQL trong PHP là một phần quan trọng trong phát triển ứng dụng web. Từ việc kết nối cơ sở dữ liệu, thực hiện truy vấn, cho đến cập nhật và xóa dữ liệu, PHP cung cấp một bộ công cụ mạnh mẽ và linh hoạt. Đặc biệt, với sự hỗ trợ của Prepared Statements, bạn có thể đảm bảo an toàn cho ứng dụng của mình trước các cuộc tấn công tiềm ẩn như SQL Injection. Hi vọng bài viết này đã giúp bạn có cái nhìn tổng quan và hiểu rõ hơn về các hàm xử lý MySQL trong PHP.