Hướng dẫn dùng and/or trong PHP

  • [Bài đọc] Toán tử AND và OR
      • Toán tử AND
        • Cú pháp:
      • Toán tử OR
        • Cú pháp:

[Bài đọc] Toán tử AND và OR

Trong bài hướng dẫn này, bạn sẽ học cách sử dụng toán tử AND và OR khi thao tác với biểu thức dạng boolean để lọc dữ liệu với mệnh đề WHERE.

Toán tử AND

Toán tử AND là một toán tử logic kết hợp hai hay nhiều biểu thức Boolean và trả về true khi và chỉ khi cả hai biểu thức được đánh giá là true. Toán tử AND trả về false nếu một trong hai biểu thức kết hợp được đánh giá là sai.

Cú pháp:
WHERE boolean_expression_1 AND boolean_expression_2

Trong cú pháp trên:

  • WHERE, AND là các từ khóa
  • boolean_expression_1, boolean_expression_2 là các biểu thức trả về kiểu boolean.

Sau đây là ví dụ minh họa kết quả trả về của toán tử AND khi kết hợp với true, false và null.

Hướng dẫn dùng and/or trong PHP

Toán tử AND thường được dùng trong mệnh đề WHERE của câu lệnh SELECT, UPDATE, DELETE để tạo điều kiện lọc tập kết quả trả về. Toán tử AND cũng được sử dụng trong điều kiện nối của mệnh đề JOIN.

Chúng ta sẽ sử dụng bảng customers để minh họa về toán tử AND.

Hướng dẫn dùng and/or trong PHP

Câu lệnh SELECT sau đây sẽ hiển thị tất cả các khách hàng ở quốc gia USA và bang CA. Chúng ta sử dụng toán tử AND trong mệnh đề WHERE như sau:

SELECT customername, country, state FROM customers WHERE country = 'USA' AND state = 'CA' 

Kết quả trả về khi thực hiện câu lệnh SELECT trên:

Hướng dẫn dùng and/or trong PHP

Với toán tử AND, bạn có thể kết hợp nhiều hơn hai biểu thức boolean. Ví dụ để thực hiện truy vấn hiển thị tất cả khách hàng sống ở California, USA và có giới tạn tín dụng lớn hơn 100000.

SELECT customername, country, state, creditlimit FROM customersWHERE country = 'USA' AND state = 'CA' AND creditlimit > 100000 

Kết quả trả về khi thực hiện câu lệnh SELECT trên:        

Hướng dẫn dùng and/or trong PHP

Toán tử OR

Toán tử OR kết hợp hai hay nhiều biểu thức dạng boolean, chỉ cần một trong các điều kiện kết hợp là đúng thì kết quả là true. Vậy để sự kết hợp giữa các biểu thức trả về là sai thì tất cả các biểu thức kết hợp đều phải trả về sai.

Cú pháp:
WHERE boolean_expression_1 OR boolean_expression_2

Trong cú pháp trên:

  • WHERE, OR là các từ khóa
  • boolean_expression_1 và boolean_expression_2 là các biểu thức boolean có thể trả về true, false, hoặc NULL.

Quan sát bảng dưới cho kết quả trả về khi kết hợp các biểu thức boolean với toán tử OR.

Hướng dẫn dùng and/or trong PHP

Sử dụng bảng customers trên để minh họa về toán tử OR.

Ví dụ sau để lấy về tất cả các khách hàng sống ở USA hoặc FRANCE. Câu lệnh SELECT với mệnh đề WHERE khi sử dụng toán tử OR:

SELECT customername, countryFROM customersWHERE country = 'USA' OR country = 'France'; 

Kết quả trả về sau khi thực hiện lệnh SELECT trên:

Hướng dẫn dùng and/or trong PHP

Câu lệnh select sau sẽ trả về các khách hàng sống ở USA hoặc FRANCE và có giới hạn tín dụng lớn hơn 100000.

SELECT customername, country, creditLimitFROM customersWHERE (country = 'USA' OR country = 'France') AND creditlimit > 100000 

 Kết quả trả về sau khi thực hiện lệnh SELECT trên:

Hướng dẫn dùng and/or trong PHP

Lưu ý rằng nếu bạn không sử dụng dấu ngoặc đơn (country = USA OR country = France), truy vấn sẽ trả lại khách hàng sống ở Hoa Kỳ hoặc khách hàng sống ở Pháp với giới hạn tín dụng lớn hơn 10000.

SELECT customername, country, creditLimitFROM customersWHERE country = 'USA' OR country = 'France' AND creditlimit > 100000 

Kết quả trả về khi thực hiện câu lệnh SELECT trên:

Hướng dẫn dùng and/or trong PHP

Vậy trong hướng dẫn này, bạn được biết về cách sử dụng toán tử AND và OR để kết hợp hai hay nhiều biểu thức, tạo thành mệnh đề giới hạn dữ liệu khi truy vấn với mệnh đề WHERE.

Khái niệm về toán tử và phân loại toán tử PHP

Xem xét một biểu thức tính toán trong PHP ví dụ: 10 + 15, đây là phép cộng cho giá trị là 25.  Trong biểu thức đó các số 10, 15 gọi là toán hạng ký hiệu + chính là toán tử của phép cộng.  

Trong PHP có nhiều toán tử được phân loại thành 5 nhóm như sau:

  • TOÁN TỬ PHP
  • Các toán tử số học
  • Các toán tử so sánh
  • Các toán tử Logic
  • Các toán tử gán
  • Các toán tử điều kiện

Các toán tử số học

Gồm các phép toán + - * / % ++ --với diễn giả và ví dụ như bảng dưới đây. Bạn có thể thử các phép toán bằng cách thay đổi số trong Form ví dụ

Toán tửDiễn tảVí dụ
+ Phép cộng hai số $A + $B : 38 + 44 = 82
- Phép trừ $A - $B : 38 - 44 = -6
* Phép nhân $A * $B : 38 * 44 = 1672
/ Phép chia $A / $B : 38 / 44 = 0.86363636363636
% modulo : Phép chia lấy dư.
Phần dư của phép chia hai số nguyên
$A / $B : 38 % 44 = 38
++ Phép toán tăng thêm 1 vào biến $A++ kết quả $A = 39
-- Phép toán giảm đi giá trị 1 $B-- kết quả $B = 43

Ví dụ: Có đoạn mã nhúng PHP vào file html như sau:

    
    Toán tử số học
    
        ";
        $c = $a - $b;
        echo "Kết quả phép trừ: $c 
"; $c = $a * $b; echo "Kết quả phép nhân: $c
"; $c = $a / $b; echo "Kết quả phép chia: $c
"; $c = $a % $b; echo "Phần dư phép chia: $c
"; $c = $a++; echo "Thêm một vào $c: $a
"; $c = $a--; echo "Giảm $a đi 1: $c
"; ?>
    
Kết quả phép cộng: 82
Kết quả phép trừ: -6
Kết quả phép nhân: 1672
Kết quả phép chia: 0.86363636363636
Phần dư phép chia: 38
Thêm một vào 38: 39
Giảm 39 đi 1: 38

Toán tử so sánh

Các toán tử so sánh trong PHP gồm có: == != > < >= <=

Cách sử dụng các toán tử này được mô tả như bảng sau: Giả sử có hai số $C và $D với các giá trị thiết lập như sau:

Toán tửDiễn tảVí dụ
== So sánh bằng:
true nếu hai toán hạng bằng nhau và false nếu khác
$C == $D ≡ 44 == 92 ≡ false
!= So sánh khác:
nếu hai toán hạng có giá trị khác nhau thì có giá trị true, giá trị giống nhau thì là false
$C != $D ≡ 44 != 92 ≡ true
> So sánh lớn hơn:
true nếu toán hạng thứ nhất lớn hơn toán hạng thứ hai
$C > $D ≡ 44 > 92 ≡ false
>= So sánh lớn hơn hoặc bằng:
true nếu toán hạng thứ nhất lớn hơn hoặc bằng toán hạng thứ hai
$C >= $D ≡ 44 >= 92 ≡ false
< So sánh nhỏ hơn:
true nếu toán hạng thứ nhất nhỏ hơn toán hạng thứ hai
$C > $D ≡ 44 < 92 ≡ true
<= So sánh nhỏ hơn hoặc bằng:
true nếu toán hạng thứ nhất nhỏ hơn hoặc bằng toán hạng thứ hai
$C <= $D ≡ 44 <= 92 ≡ true

Ví dụ, có file HTML nhúng mã PHP như sau:

    
 
Ví dụ về toán tử so sánh 
 
"; 
    }else{ 
       echo "a không bằng b
"; } if( $a > $b ){ echo "a lớn hơn b
"; }else{ echo "a không lớn hơn b
"; } if( $a < $b ){ echo "a nhỏ hơn b
"; }else{ echo "a không nhỏ hơn b
"; } if( $a != $b ){ echo "a khác b
"; }else{ echo "b bằng b
"; } if( $a >= $b ){ echo "a lớn hơn hoặc bằng b
"; }else{ echo "a không lớn hơn hoặc bằng
"; } if( $a <= $b ){ echo "a nhỏ hơn hoặc bằng b
"; }else{ echo "a không nhỏ hơn hoặc bằng b
"; } ?>

Chạy code trên ra kết quả như sau (a = 44; b = 92):

a không bằng b
a không lớn hơn b
a nhỏ hơn b
a khác b
a không lớn hơn hoặc bằng
a nhỏ hơn hoặc bằng b

Toán tử Logic

Các toán tử logic là: and or && ||!

Giả sử $A và $B là hai số bạn thiết lập giá trị của chúng như sau:

Lưu ý vì quy tắc chuyển đổi biến, trong biểu thức logic nếu một số khác không PHP tự động nhận biết đó là giá trị true, vậy $A = 27 là true; $B = 59 là true;

Toán tửDiễn tảVí dụ
and Toán tử và:
true nếu hai toán hạng có giá trị true
($A and $B) ≡ (27 and 59) ≡ (true and true) ≡ true
or Toán tử hoặc:
true nếu một trong hai toán tử là true
($A or $B) ≡ (27 or 59) ≡ (true or true) ≡ true
&& Toán tử và:
true nếu hai toán hạng có giá trị true
($A && $B) ≡ (27 && 59) ≡ (true && true) ≡ true
|| Toán tử hoặc:
true nếu một trong hai toán tử là true
($A || $B) ≡ (27 || 59) ≡ (true || true) ≡ true
! Toán NOT (phủ định):
true nếu giá trị là false
!($A || $B) ≡ !(27 || 59) ≡ !(true || true) ≡ false

Các toán tử gán

Các toán tử gán gồm: = += -= *= /= %=

Toán tửDiễn tảVí dụ
= Toán tử gán:
Gán biểu thức bên phải của = vào biến bên trái
$C = ($A + $B) kết quả $C bằng 86
+= Toán tử công thêm:
Công thêm vào biến bên trái += giá trị bên phải
$C = 59;
$C += ($A + $B) kết quả $C bằng 145
-= Toán tử trừ bớt:
Bớt đi giá trị biến bên trái của -= một lượng bằng biểu thức bên phải
$C = 76;
$C -= ($A + $B) kết quả $C bằng -10
*= Toán tử nhân với:
$A *= $B tương đương với $A = $A * $B
$A *= $B kết quả $A bằng 1593
/= Toán tử chia cho:
$A /= $B tương đương với $A = $A / $B
$A /= $B kết quả $A bằng 0.45762711864407
%= Toán tử gán module:
$A %= $B tương đương với $A = $A % $B
$A %= $B kết quả $A bằng 27

Các toán điều kiện

Sử dụng cặp ký hiệu ?: để có loại toán tử này. Xét biểu thức sau:
$a ? $b : $c
thì giá trị của biểu thức là $b nếu $atrue; và là $c nếu $afalse.

Ví dụ:

    

Từ PHP7 có thêm toán tử ??: Toán tử này là sự kết hợp của ?: và hàm isset()