MySQLi - Mệnh đề WHERE

Chúng tôi đã thấy SQL SELECTlệnh tìm nạp dữ liệu từ bảng MySQLi. Chúng ta có thể sử dụng một mệnh đề điều kiện được gọi làWHEREmệnh đề để lọc ra kết quả. Sử dụng mệnh đề WHERE, chúng ta có thể chỉ định tiêu chí lựa chọn để chọn các bản ghi bắt buộc từ một bảng.

Cú pháp

Đây là cú pháp SQL chung của lệnh SELECT với mệnh đề WHERE để tìm nạp dữ liệu từ bảng MySQLi -

SELECT field1, field2,...fieldN table_name1, table_name2...
[WHERE condition1 [AND [OR]] condition2.....
  • Bạn có thể sử dụng một hoặc nhiều bảng được phân tách bằng dấu phẩy để bao gồm các điều kiện khác nhau bằng mệnh đề WHERE, nhưng mệnh đề WHERE là một phần tùy chọn của lệnh SELECT.

  • Bạn có thể chỉ định bất kỳ điều kiện nào bằng mệnh đề WHERE.

  • Bạn có thể chỉ định nhiều điều kiện bằng cách sử dụng AND hoặc là OR các toán tử.

  • Mệnh đề WHERE cũng có thể được sử dụng cùng với lệnh DELETE hoặc UPDATE SQL để chỉ định một điều kiện.

Các WHEREmệnh đề hoạt động giống như một điều kiện if trong bất kỳ ngôn ngữ lập trình nào. Mệnh đề này được sử dụng để so sánh giá trị đã cho với giá trị trường có sẵn trong bảng MySQLi. Nếu giá trị đã cho từ bên ngoài bằng với giá trị trường có sẵn trong bảng MySQLi, thì nó trả về hàng đó.

Đây là danh sách các toán tử, có thể được sử dụng với WHERE mệnh đề.

Giả sử trường A giữ 10 và trường B giữ 20, sau đó -

Nhà điều hành Sự miêu tả Thí dụ
= Kiểm tra xem giá trị của hai toán hạng có bằng nhau hay không, nếu có thì điều kiện trở thành true. (A = B) là không đúng.
! = Kiểm tra xem giá trị của hai toán hạng có bằng nhau hay không, nếu các giá trị không bằng nhau thì điều kiện trở thành true. (A! = B) là đúng.
> Kiểm tra xem giá trị của toán hạng bên trái có lớn hơn giá trị của toán hạng bên phải hay không, nếu có thì điều kiện trở thành true. (A> B) không đúng.
< Kiểm tra xem giá trị của toán hạng bên trái có nhỏ hơn giá trị của toán hạng bên phải hay không, nếu có thì điều kiện trở thành true. (A <B) là đúng.
> = Kiểm tra xem giá trị của toán hạng bên trái có lớn hơn hoặc bằng giá trị của toán hạng bên phải hay không, nếu có thì điều kiện trở thành true. (A> = B) là không đúng.
<= Kiểm tra xem giá trị của toán hạng bên trái nhỏ hơn hoặc bằng giá trị của toán hạng bên phải hay không, nếu có thì điều kiện trở thành true. (A <= B) là đúng.

Mệnh đề WHERE rất hữu ích khi bạn muốn tìm nạp các hàng đã chọn từ bảng, đặc biệt khi bạn sử dụng MySQLi Join. Tham gia được thảo luận trong một chương khác.

Một thực tế phổ biến là tìm kiếm hồ sơ bằng cách sử dụng Primary Key để thực hiện tìm kiếm nhanh chóng.

Nếu điều kiện đã cho không khớp với bất kỳ bản ghi nào trong bảng, thì truy vấn sẽ không trả về bất kỳ hàng nào.

Tìm nạp dữ liệu từ Command Prompt

Điều này sẽ sử dụng lệnh SQL SELECT với mệnh đề WHERE để tìm nạp dữ liệu đã chọn từ bảng hướng dẫn của MySQLi.

Thí dụ

Ví dụ sau sẽ trả về tất cả các bản ghi từ tutorials_inf bảng có tên là sai -

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql>SELECT * from tutorials_inf where name = 'sai';
+----+------+
| id | name |
+----+------+
|  1 | SAI  |
+----+------+
1 row in set (0.00 sec)

mysql>

Trừ khi thực hiện một LIKEso sánh trên một chuỗi, so sánh không phân biệt chữ hoa chữ thường. Bạn có thể phân biệt chữ hoa chữ thường trong tìm kiếm bằng cách sử dụngBINARY từ khóa như sau -

root@host# mysql -u root -p password;
Enter password:*******

mysql> use TUTORIALS;
Database changed

mysql> SELECT * from tutorials_inf \WHERE BINARY name = 'sai';
Empty set (0.02 sec)

mysql>

Tìm nạp dữ liệu bằng PHP Script:

Bạn có thể sử dụng cùng một lệnh SQL SELECT với WHERE CLAUSE vào hàm PHP mysqli_query().

Thí dụ

Ví dụ sau sẽ trả về tất cả các bản ghi từ tutorials_inf bảng có tên là sai -

<?php
   $dbhost = 'localhost:3306';
   $dbuser = 'root';
   $dbpass = '';
   $dbname = 'TUTORIALS';
   $conn = mysqli_connect($dbhost, $dbuser, $dbpass,$dbname);
   
   if(! $conn ) {
      die('Could not connect: ' . mysqli_error());
   }
   echo 'Connected successfully<br>';
   $sql = 'SELECT * from tutorials_inf where name="sai"';
   $result = mysqli_query($conn, $sql);

   if (mysqli_num_rows($result) > 0) {
      while($row = mysqli_fetch_assoc($result)) {
         echo "Name: " . $row["name"]. "<br>";
      }
   } else {
      echo "0 results";
   }
   mysqli_close($conn);
?>

Đầu ra mẫu phải như thế này -

Connected successfully
Name: SAI