Truy vấn (select) dữ liệu và câu lệnh where trong MySQL với PHP

Đây là bài 51/53 bài của series môn học Lập trình Web PHP

Trong bài này, chúng ta sẽ tìm hiểu về select dữ liệu trong MySQL với PHP. Để học tốt bài này, các bạn cần đọc lại bài Cài đặt môi trường lập trình Web PHP với XAMPP để biết cách chạy ứng dụng web PHP với XAMPP.

Các ví dụ select dữ liệu sẽ thực hiện trên table gochocit_posts trong database gochocit. Database và table này đã được tạo trong bài Tạo database và tạo table trong MySQL với PHP. Các bạn cần đọc lại để xem cấu trúc của database và table trên.

Bảng gochocit_posts được tạo ra
Dữ liệu được insert vào table gochocit_posts

Chúng ta có thể select một hoặc nhiều cột trong table. Cú pháp:

SELECT column_name(s) FROM table_name

Nếu muốn select tất cả cột trong table thì sử dụng ký tự *. Cú pháp:

SELECT * FROM table_name

1. Truy vấn (select) table sử dụng MySQLi (object-oriented)

Câu lệnh SELECT FROM được thực thi khi đối tượng mysqli$conn gọi hàm query().

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

// create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT post_author, post_title, post_content FROM gochocit_posts";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  // output data of each row
  while($row = $result->fetch_assoc()) {
    echo "Author: " . $row["post_author"]. " - Title: " . $row["post_title"]. " - " . $row["post_content"]. "<br>";
  }
} else {
  echo "0 results";
}
  
$conn->close();
?>

Thuộc tính num_rows lưu trữ số dòng (row) select được. Hàm fetch_assoc() trả về mảng kết hợp (associative array) của những dòng select được. Vòng lặp while được sử dụng để duyệt qua từng dòng của kết quả select được.

2. Truy vấn (select) table sử dụng MySQLi (procedural)

Câu lệnh SELECT FROM được thực thi khi gọi hàm mysqli_query().

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

// create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);

// check connection
if (!$conn) {
  die("Connection failed: " . $conn->connect_error);
}
$sql = "SELECT post_author, post_title, post_content FROM gochocit_posts";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
  // output data of each row
  while($row = mysqli_fetch_assoc($result)) {
    echo "Author: " . $row["post_author"]. " - Title: " . $row["post_title"]. " - " . $row["post_content"]. "<br>";
  }
} else {
  echo "0 results";
}
  
mysqli_close($conn);
?>

Hàm mysqli_num_rows() giúp lấy ra số dòng (row) select được. Hàm mysqli_fetch_assoc() trả về mảng kết hợp (associative array) của những dòng select được. Vòng lặp while được sử dụng để duyệt qua từng dòng của kết quả select được.

3. Truy vấn (select) table sử dụng PDO (PHP Data Objects)

Câu lệnh SELECT FROM được thực thi khi đối tượng PDO$conn gọi hàm prepare() rồi thực thi select với hàm execute().

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

try {
  $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $stmt = $conn->prepare("SELECT post_author, post_title, post_content FROM gochocit_posts");
  $stmt->execute();

  // set the resulting array to associative
  $stmt->setFetchMode(PDO::FETCH_ASSOC);
  $result = $stmt->fetchAll();
  foreach($result as $row) {
    echo "Author: " . $row["post_author"]. " - Title: " . $row["post_title"]. " - " . $row["post_content"]. "<br>";
  }
} catch(PDOException $e) {
  echo "Error: " . $e->getMessage();
}

$conn = null;
?>

Sử dụng hàm setFetchMode() với đối số PDO::FETCH_ASSOC để thiết lập kết quả trả về là mảng kết hợp (associative array) của những dòng select được. Hàm fetchAll() trả về tất cả những dòng select được. Vòng lặp foreach được sử dụng để duyệt qua từng dòng của kết quả select được.

4. Truy vấn (select) table với câu lệnh where

Chúng ta có thể sử dụng câu lệnh WHERE với SELECT để lấy ra những dòng (row) thỏa mãn một điều kiện nào đó. Ví dụ:

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

try {
  $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $stmt = $conn->prepare("SELECT * FROM gochocit_posts WHERE ID='3'");
  $stmt->execute();

  // set the resulting array to associative
  $stmt->setFetchMode(PDO::FETCH_ASSOC);
  $result = $stmt->fetchAll();
  foreach($result as $row) {
    echo "Author: " . $row["post_author"]. " - Title: " . $row["post_title"]. " - " . $row["post_content"]. "<br>";
  }
} catch(PDOException $e) {
  echo "Error: " . $e->getMessage();
}

$conn = null;
?>

Trong ví dụ trên, chúng ta chỉ lấy ra dòng dữ liệu nào có ID=3. Các bạn có thể đọc bài Sử dụng mệnh đề WHERE trong MySQL với Python để xem thêm một số cách sử dụng WHERE với SELECT.

5/5 - (2 bình chọn)
Bài trước và bài sau trong môn học<< Xóa (delete) dữ liệu trong MySQL với PHPSửa (update) dữ liệu và câu lệnh drop trong MySQL với PHP >>
Chia sẻ trên mạng xã hội:

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.