Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm thế nào để xử lý các giá trị 'Boolean' trong PHP &MySQL?

Chúng tôi đang sử dụng MySQL phiên bản 8.0.12. Trước tiên hãy để chúng tôi kiểm tra phiên bản MySQL:

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.12    |
+-----------+
1 row in set (0.00 sec)

Để đối phó với Boolean trong MySQL, bạn có thể sử dụng BOOL hoặc BOOLEAN hoặc TINYINT (1). Nếu bạn sử dụng BOOL hoặc BOOLEAN, thì MySQL nội bộ sẽ chuyển đổi nó thành TINYINT (1).

Trong kiểu dữ liệu BOOL hoặc BOOLEAN, nếu bạn sử dụng chữ true thì MySQL biểu thị nó là 1 và chữ false là 0 giống như trong ngôn ngữ PHP / C / C ++.

Để chứng minh rằng MySQL chuyển đổi BOOL hoặc BOOLEAN thành TINYINT (1), chúng ta hãy tạo một bảng với cột BOOLEAN hoặc BOOL.

Ở đây, chúng tôi đang tạo một bảng với cột BOOLEAN. Truy vấn để tạo bảng như sau:

mysql> create table BoolOrBooleanOrTinyintDemo
   -> (
   -> Id int NOT NULL AUTO_INCREMENT,
   -> isvalidAddress BOOLEAN,
   -> PRIMARY KEY(Id)
   -> );
Query OK, 0 rows affected (0.74 sec)

Bây giờ hãy kiểm tra DDL của bảng trên bằng lệnh SHOW CREATE. Truy vấn như sau:

mysql> show create table BoolOrBooleanOrTinyintDemo\G

Sau đây là kết quả:

*************************** 1. row ***************************
Table: BoolOrBooleanOrTinyintDemo
Create Table: CREATE TABLE `boolorbooleanortinyintdemo` (
   `Id` int(11) NOT NULL AUTO_INCREMENT,
   `isvalidAddress` tinyint(1) DEFAULT NULL,
   PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci
1 row in set (0.00 sec)

Nhìn vào cột isvalidAddress, kiểu dữ liệu BOOLEAN được chuyển đổi thành tinyint (1) trong nội bộ. Bây giờ bạn có thể kiểm tra chữ true sẽ được biểu thị bằng 1 và chữ sai bằng 0. Chèn một số bản ghi trong bảng với giá trị chữ đúng và sai. Truy vấn để chèn bản ghi như sau:

mysql> insert into BoolOrBooleanOrTinyintDemo(isvalidAddress) values(true);
Query OK, 1 row affected (0.43 sec)
mysql> insert into BoolOrBooleanOrTinyintDemo(isvalidAddress) values(false);
Query OK, 1 row affected (0.17 sec)
mysql> insert into BoolOrBooleanOrTinyintDemo(isvalidAddress) values(true);
Query OK, 1 row affected (0.29 sec)
mysql> insert into BoolOrBooleanOrTinyintDemo(isvalidAddress) values(false);
Query OK, 1 row affected (0.12 sec)
mysql> insert into BoolOrBooleanOrTinyintDemo(isvalidAddress) values(true);
Query OK, 1 row affected (0.33 sec)

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn để hiển thị tất cả các bản ghi như sau:

mysql> select *from BoolOrBooleanOrTinyintDemo;

Sau đây là kết quả:

+----+----------------+
| Id | isvalidAddress |
+----+----------------+
|  1 |              1 |
|  2 |              0 |
|  3 |              1 |
|  4 |              0 |
|  5 |              1 |
+----+----------------+
5 rows in set (0.00 sec)

Nhìn vào kết quả mẫu ở trên, true đại diện là 1 và false đại diện là 0.

Trong PHP, nếu bạn sử dụng true thì nó sẽ được biểu thị là 1 và false sẽ được biểu thị là 0.

Nhìn vào đoạn mã PHP sau đây. Ở đây, tôi đã đặt biến ‘isValidAddress’. Giá trị là 1, có nghĩa là nó đánh giá điều kiện if đúng và chỉ thực thi phần thân của câu lệnh if. Kiểm tra mã sau:

$isValidAddress = 1;
if($isValidAddress)
{
   echo 'true is represented as ';
   echo ($isValidAddress);
}
else
{
   echo 'false is represented as ';
   echo ($isValidAddress);
}

Đây là ảnh chụp nhanh của mã:

Làm thế nào để xử lý các giá trị  Boolean  trong PHP &MySQL?

Sau đây là kết quả:

Làm thế nào để xử lý các giá trị  Boolean  trong PHP &MySQL?

Nếu bạn thay đổi biến ‘isValidAddress’ thành giá trị 0. Điều đó có nghĩa là nó đánh giá điều kiện if là false và chỉ thực thi phần thân của câu lệnh else. Sau đây là mã:

$isValidAddress=0;
if($isValidAddress)
{
   echo 'true is represented as ';
   echo ($isValidAddress);
}
else
{
   echo 'false is represented as ';
   echo ($isValidAddress);
}

Đây là ảnh chụp nhanh của mã:

Làm thế nào để xử lý các giá trị  Boolean  trong PHP &MySQL?

Sau đây là kết quả:

Làm thế nào để xử lý các giá trị  Boolean  trong PHP &MySQL?