PHP Cơ bản
PHP Nâng cao
PHP & Cơ sở dữ liệu MySQL
Ví dụ PHP
Tài liệu tham khảo PHP
Quảng cáo

Truy vấn SELECT trong MySQL bằng PHP

Trong hướng dẫn này, bạn sẽ học cách chọn bản ghi từ bảng MySQL bằng PHP.

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

Cho đến nay bạn đã học cách tạo cơ sở dữ liệu và bảng cũng như chèn dữ liệu. Bây giờ đã đến lúc lấy dữ liệu những gì đã chèn trong hướng dẫn trước. Câu lệnh SQL SELECT đượ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ó như sau:

SELECT column1_namecolumn2_namecolumnN_name FROM table_name;

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() để lấy dữ liệu bảng.

Hãy xem xét bảng cơ sở dữ liệu người của chúng tôi có các bản ghi sau:

Ví dụ

+ ---- + ------------ + ----------- + ------------------- --- +
| id | first_name | last_name | email |
+ ---- + ------------ + ----------- + ------------------- --- +
| 1 | Peter | Parker | peterparker@mail.com |
| 2 | John | Rambo | johnrambo@mail.com |
| 3 | Clark | Kent | clarkkent@mail.com |
| 4 | John | Carter | johncarter@mail.com |
| 5 | Harry | Potter | harrypotter@mail.com |
+ ---- + ------------ + ----------- + ------------------- --- +

Mã PHP trong ví dụ sau chọn tất cả dữ liệu được lưu trữ trong bảng persons (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).

Thủ tục

Ví dụ

<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$link = mysqli_connect("localhost", "root", "", "demo");
 
// Check connection
if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
 
// Attempt select query execution
$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>";
        // Free result set
        mysqli_free_result($result);
    } else{
        echo "No records matching your query were found.";
    }
} else{
    echo "ERROR: Could not able to execute $sql. " . mysqli_error($link);
}
 
// Close connection
mysqli_close($link);
?>

Hướng đối tượng

Ví dụ

<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
$mysqli = new mysqli("localhost", "root", "", "demo");
 
// Check connection
if($mysqli === false){
    die("ERROR: Could not connect. " . $mysqli->connect_error);
}
 
// Attempt select query execution
$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>";
        // Free result set
        $result->free();
    } else{
        echo "No records matching your query were found.";
    }
} else{
    echo "ERROR: Could not able to execute $sql. " . $mysqli->error;
}
 
// Close connection
$mysqli->close();
?>

PDO

Ví dụ

<?php
/* Attempt MySQL server connection. Assuming you are running MySQL
server with default setting (user 'root' with no password) */
try{
    $pdo = new PDO("mysql:host=localhost;dbname=demo", "root", "");
    // Set the PDO error mode to exception
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e){
    die("ERROR: Could not connect. " . $e->getMessage());
}
 
// Attempt select query execution
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>";
        // Free result set
        unset($result);
    } else{
        echo "No records matching your query were found.";
    }
} catch(PDOException $e){
    die("ERROR: Could not able to execute $sql. " . $e->getMessage());
}
 
// Close connection
unset($pdo);
?>

Giải thích mã (kiểu thủ tục)

Trong ví dụ trên, dữ liệu do hàm mysqli_query() trả về được lưu trữ trong biến $result. Mỗi lần hàm mysqli_fetch_array() được gọi, nó trả về hàng tiếp theo từ tập hợp kết quả dưới dạng một mảng. Các vòng lặp while được sử dụng để vòng qua tất cả các hàng trong tập kết quả. Cuối cùng, giá trị của trường riêng lẻ 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 vào biến $row như $row['id'] hoặc $row[0], $row['first_name'] hoặc $row[1], $row['last_name'] hoặc $row[2]$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ố hàng được trả về bởi truy vấn bằng cách chuyể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ài viết này đã giúp ích cho bạn?

Advertisements