Học lập trình PHP cơ bản

Bài 26: Select dữ liệu MySQL bằng PHP

Câu lệnh select thường dùng để lấy dữ liệu và hiển thị lên website ở cả frontend lẫn backend, đây là câu lệnh thông dụng hay sử dụng nhất trong một website.
Trong MySQL để lấy danh sách records trong một bảng dữ liệu thì ta sử dụng lệnh select với cú pháp:
SELECT field1, field2 FROM table_name
Bên cạnh đó ta cũng có sử dụng thêm điều kiện where limit để giới hạn kết quả trả về. Như vậy việc lấy danh sách dữ liệu trong MySQL bằng PHP thực chất là ta sử dụng PHP để chạy câu truy vấn SQL.
Bây giờ chúng ta cùng tìm hiểu các thao tác lấy dữ liệu với MySQLi.

1) Sử dụng MySQLi Object-oriented

// Kết nối CSDL
$conn = new mysqli('localhost', 'root', '', 'demo');
 
// Kiểm tra kết nối
if ($conn->connect_error) {
    die("Kết nối thất bại: " . $conn->connect_error);
} 
 
// Câu SQL lấy danh sách
$sql = "SELECT id, title, content FROM News";
 
// Thực thi câu truy vấn và gán vào $result
$result = $conn->query($sql);
 
// Kiểm tra số lượng record trả về có lơn hơn 0
// Nếu lớn hơn tức là có kết quả, ngược lại sẽ không có kết quả
if ($result->num_rows > 0) 
{
    // Sử dụng vòng lặp while để lặp kết quả
    while($row = $result->fetch_assoc()) {
        echo "title: " . $row["title"]. " - Content: " . $row["content"]."<br>";
    }
} 
else {
    echo "Không có record nào";
}
 
// ngắt kết nối
$conn->close();

2) Sử dụng MySQLi Procedural

// Kết nối CSDL
$conn = mysqli_connect('localhost', 'root', '', 'demo');
 
// Kiểm tra kết nối
if (!$conn) {
    die("Kết nối thất bại: " . mysqli_connect_error());
}
 
// Câu SQL lấy danh sách
$sql = "SELECT id, title, content FROM News";
 
// Thực thi câu truy vấn và gán vào $result
$result = mysqli_query($conn, $sql);
 
// Kiểm tra số lượng record trả về có lơn hơn 0
// Nếu lớn hơn tức là có kết quả, ngược lại sẽ không có kết quả
if (mysqli_num_rows($result) > 0) 
{
    // Sử dụng vòng lặp while để lặp kết quả
    while($row = mysqli_fetch_assoc($result)) {
        echo "title: " . $row["title"]. " - Content: " . $row["content"]. "<br>";
    }
} 
else {
    echo "Không có record nào";
}
 
// ngắt kết nối
mysqli_close($conn);

3) Sử dụng PDO

try {
    // Kết nối CSDL
    $conn = new PDO("mysql:host=localhost;dbname=demo", 'root', '');
     
    // Khai báo exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
    // Sử đụng Prepare 
    $stmt = $conn->prepare("SELECT id, title, content FROM News"); 
     
    // Thực thi câu truy vấn
    $stmt->execute();
 
    // Khai báo fetch kiểu mảng kết hợp
    $stmt->setFetchMode(PDO::FETCH_ASSOC); 
     
    // Lấy danh sách kết quả
    $result = $stmt->fetchAll();
     
    // Lặp kết quả
    foreach ($result as $item){
        echo $item['title'] . ' - '. $item['content'];
    }
}
catch(PDOException $e) {
    echo "Lỗi: " . $e->getMessage();
}
 
// Ngắt kết nối
$conn = null;