Câu lệnh SELECT | MySQL & PHP

“Hãy hòa nhã với những kẻ dở hơi. Ai biết được ngày sau bạn có thể phải làm việc cho một kẻ như vậy.”

Bill Gates

Microsoft

Trong hướng tự học PHP và MySQL này, bạn sẽ tìm hiểu cách sử dụng câu lệnh SELECT để chọn bản ghi từ bảng MySQL bằng PHP.

Hướng dẫn sử dụng câu lệnh SELECT để lấy dữ liệu từ bảng CSDL MySQL trong lập trình PHP

Chọn dữ liệu từ các bảng Cơ sở dữ liệu

Cho đến nay bạn đã học được cách tạo CSDLtạo bảng CSDL cũng như chèn dữ liệu trong MySQL.

Như vậy, bạn đã có dữ liệu sẵn sàng.

Bây giờ là lúc để lấy dữ liệu từ những gì đã chèn trong các bài học trước để sử dụng.

Câu lệnh SELECT trong SQL được sử dụng để chọn các bản ghi từ các bảng cơ sở dữ liệu. Cú pháp cơ bản của nó là như sau:

SELECT column1_name, column2_name, columnN_name FROM table_name;

Chúng ta hãy tạo một truy vấn SQL bằng cách sử dụng câu lệnh SELECT, sau đó chúng ta sẽ thực hiện truy vấn SQL này thông qua việc chuyển nó đến hàm mysqli_query() của PHP để lấy dữ liệu từ bảng.

Xem xét bảng cơ sở dữ liệu person của chúng ta có các hồ sơ sau đây:

Ví dụ về bảng MySQL đơn giản

Code PHP trong ví dụ sau đây chọn tất cả dữ liệu được lưu trữ trong bảng person (sử dụng ký tự dấu hoa thị (*) thay cho tên cột sẽ chọn tất cả dữ liệu trong bảng).

SELECT * FROM table_name;

1. Sử dụng lệnh SELECT để chọn dữ liệu từ bảng với MySQLi hướng thủ tục

<?php
/*Cố gắng kết nối máy chủ MySQL. Giả sử bạn đang chạy MySQL
Máy chủ có cài đặt mặc định (user là 'root' và không có mật khẩu)*/
$link = mysqli_connect("localhost", "root", "", "demo");
 
// Kểm tra kết nối
if($link === false){
    die("ERROR: Không thể kết nối. " . mysqli_connect_error());
}
 
// Cố gắng thực hiện câu lệnh SELECT
$sql = "SELECT * FROM persons";
if($result = mysqli_query($link, $sql)){
    if(mysqli_num_rows($result) > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = mysqli_fetch_array($result)){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        // Giải phóng bộ nhớ của biến
        mysqli_free_result($result);
    } else{
        echo "Không có bản ghi nào được tìm thấy.";
    }
} else{
    echo "ERROR: Không thể thực thi câu lệnh $sql. " . mysqli_error($link);
}
 
// Đóng kết nối
mysqli_close($link);
?>

2. Sử dụng lệnh SELECT để chọn dữ liệu từ bảng với MySQLi hướng đối tượng

<?php
/*Cố gắng kết nối máy chủ MySQL. Giả sử bạn đang chạy MySQL
Máy chủ có cài đặt mặc định (user là 'root' và không có mật khẩu)*/
$mysqli = new mysqli("localhost", "root", "", "demo");
 
// Kiểm tra kết nối
if($mysqli === false){
    die("ERROR: Không thể kết nối. " . $mysqli->connect_error);
}
 
// Cố gắng thực hiện câu lệnh SELECT
$sql = "SELECT * FROM persons";
if($result = $mysqli->query($sql)){
    if($result->num_rows > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = $result->fetch_array()){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        // Giải phóng bộ nhớ của biến
        $result->free();
    } else{
        echo "Không có bản ghi nào được tìm thấy.";
    }
} else{
    echo "ERROR: Không thể thực thi câu lệnh $sql. " . $mysqli->error;
}
 
// Đóng kết nối
$mysqli->close();
?>

3. Sử dụng lệnh SELECT để chọn dữ liệu từ bảng với PDO

<?php
/*Cố gắng kết nối máy chủ MySQL. Giả sử bạn đang chạy MySQL
Máy chủ có cài đặt mặc định (user là 'root' và không có mật khẩu)*/
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    // Thiết lập chế độ PDO error thành Ngoại lệ
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("ERROR: Could not connect. " . $e->getMessage());
}
 
// Cố gắng thực hiện câu lệnh SELECT
try{
    $sql = "SELECT * FROM persons";   
    $result = $pdo->query($sql);
    if($result->rowCount() > 0){
        echo "<table>";
            echo "<tr>";
                echo "<th>id</th>";
                echo "<th>first_name</th>";
                echo "<th>last_name</th>";
                echo "<th>email</th>";
            echo "</tr>";
        while($row = $result->fetch()){
            echo "<tr>";
                echo "<td>" . $row['id'] . "</td>";
                echo "<td>" . $row['first_name'] . "</td>";
                echo "<td>" . $row['last_name'] . "</td>";
                echo "<td>" . $row['email'] . "</td>";
            echo "</tr>";
        }
        echo "</table>";
        // Giải phóng bộ nhớ của biến
        unset($result);
    } else{
        echo "Không có bản ghi nào được tìm thấy.";
    }
} catch(PDOException $e){
    die("ERROR: Không thể thực thi câu lệnh $sql. " . $e->getMessage());
}
 
// Đóng kết nối
unset($pdo);
?>

Giải thích code

Trong ví dụ trên, dữ liệu được trả về bởi hàm mysqli_query() được lưu trữ trong biến $result.

Mỗi lần hàm mysqli_fetch_array() được gọi, nó sẽ trả về hàng tiếp theo từ tập kết quả dưới dạng một mảng.

Vòng lặp while được sử dụng để lặp qua tất cả các hàng trong tập kết quả.

Cuối cùng, giá trị của từng trường có thể được truy cập từ hàng bằng cách chuyển chỉ mục trường hoặc tên trường cho biến $row như $row[‘id’] hoặc $row[0], $row[‘first_name’] hoặc $row[1], $row[‘last_name’] hoặc $row[2] và $row[’email’] hoặc $row[3].

Nếu bạn muốn sử dụng vòng lặp for, bạn có thể lấy giá trị bộ đếm vòng lặp hoặc số lượng hàng được truy vấn trả về bằng cách truyền biến $result cho hàm mysqli_num_rows().

Giá trị bộ đếm vòng lặp này xác định số lần vòng lặp sẽ chạy.

Bạn đã hiểu cách sử dụng câu lệnh SELECT để lấy dữ liệu trong MySQL chưa?

Câu lệnh SELECT là một câu lệnh phổ biến nhất khi bạn muốn thao tác với CSDL MySQL.

Hãy ghi nhớ cách sử dụng câu lệnh SELECT giống như là bảng cửu chương vậy nhé.

PHPDev

Có thể bạn muốn xem

Pesudo class trong CSS

Bộ chọn lớp giả CSS (Pesudo class Selector) khớp với các thành phần dựa trên một điều kiện bổ sung và không nhất thiết phải được định nghĩa trong DOM tree.

Pesudo Element trong CSS

Sử dụng phần tử giả (Pesudo element) trong CSS là một cách để áp dụng các quy tắc CSS cho phần tử không xác định vị trí trong DOM tree.

Leave a reply

Please enter your comment!
Please enter your name here