× Giới thiệu Lịch khai giảng Tin tức Sản phẩm học viên

Hướng dẫn PHP MySQL - Sử dụng Mệnh đề WHERE

12/04/2023 01:25

Mệnh đề WHERE được sử dụng để chỉ trích xuất những bản ghi đáp ứng một điều kiện cụ thể. Tìm hiểu thêm về cách sử dụng mệnh đề where ngay sau đây

Chọn và lọc dữ liệu từ cơ sở dữ liệu MySQL

Mệnh đề WHERE được sử dụng để lọc các bản ghi.

Mệnh đề WHERE được sử dụng để chỉ trích xuất những bản ghi đáp ứng một điều kiện cụ thể.

SELECT column_name(s) FROM table_name WHERE column_name operator value 

Chọn và lọc dữ liệu với MySQLi

Ví dụ sau đây chọn các cột id, firstname và lastname từ bảng MyGuests trong đó họ là "Doe" và hiển thị nó trên trang:

Ví dụ (Hướng đối tượng MySQLi)Nhận máy chủ PHP của riêng bạn

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

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT id, firstname, lastname FROM MyGuests WHERE lastname='Doe'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  // output data of each row
  while($row = $result->fetch_assoc()) {
    echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
  }
else {
  echo "0 results";
}
$conn->close();
?>
Chạy ví dụ »

Các dòng mã để giải thích từ ví dụ trên:

Trước tiên, chúng tôi thiết lập truy vấn SQL để chọn các cột id, tên và họ từ bảng MyGuests có họ là "Doe". Dòng mã tiếp theo chạy truy vấn và đặt dữ liệu kết quả vào một biến có tên $result.

Sau đó, function num_rows()kiểm tra xem có nhiều hơn 0 hàng được trả về hay không.

Nếu có nhiều hơn 0 hàng được trả về, hàm fetch_assoc()sẽ đặt tất cả kết quả vào một mảng kết hợp mà chúng ta có thể lặp qua. Vòng while()lặp lặp qua tập kết quả và xuất dữ liệu từ các cột id, firstname và lastname.

Ví dụ sau hiển thị giống như ví dụ trên, theo cách thủ tục MySQLi:

Ví dụ (Thủ tục MySQLi)

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

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
  die("Connection failed: " . mysqli_connect_error());
}

$sql = "SELECT id, firstname, lastname FROM MyGuests WHERE lastname='Doe'";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
  // output data of each row
  while($row = mysqli_fetch_assoc($result)) {
    echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
  }
else {
  echo "0 results";
}

mysqli_close($conn);
?>
 

Bạn cũng có thể đưa kết quả vào một bảng HTML:

Ví dụ (Hướng đối tượng MySQLi)

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

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT id, firstname, lastname FROM MyGuests WHERE lastname='Doe'";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  echo "<table><tr><th>ID</th><th>Name</th></tr>";
  // output data of each row
  while($row = $result->fetch_assoc()) {
    echo "<tr><td>".$row["id"]."</td><td>".$row["firstname"]." ".$row["lastname"]."</td></tr>";
  }
  echo "</table>";
else {
  echo "0 results";
}
$conn->close();
?>
Chạy ví dụ »

Chọn dữ liệu với PDO (+ Báo cáo đã chuẩn bị)

Ví dụ sau sử dụng câu lệnh đã chuẩn bị.

Nó chọn các cột id, firstname và lastname từ bảng MyGuests nơi họ là "Doe" và hiển thị nó trong một bảng HTML:

Ví dụ (PDO)

<?php
echo "<table style='border: solid 1px black;'>";
echo "<tr><th>Id</th><th>Firstname</th><th>Lastname</th></tr>";

class TableRows extends RecursiveIteratorIterator {
  function __construct($it) {
    parent::__construct($it, self::LEAVES_ONLY);
  }

  function current() {
    return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>";
  }

  function beginChildren() {
    echo "<tr>";
  }

  function endChildren() {
    echo "</tr>" . "\n";
  }
}

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";

try {
  $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests WHERE lastname='Doe'");
  $stmt->execute();

  // set the resulting array to associative
  $result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
  foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
    echo $v;
  }
}
catch(PDOException $e) {
  echo "Error: " . $e->getMessage();
}
$conn = null;
echo "</table>";
?>