如何在PHP和MySQL中處理布林值?


我們使用的是MySQL 8.0.12版本。讓我們首先檢查MySQL版本。

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

在MySQL中處理布林值,可以使用BOOL、BOOLEAN或TINYINT(1)。如果使用BOOL或BOOLEAN,MySQL會將其內部轉換為TINYINT(1)。

在BOOL或BOOLEAN資料型別中,如果使用true字面量,MySQL將其表示為1,false字面量表示為0,就像在PHP/C/C++語言中一樣。

為了證明MySQL將BOOL或BOOLEAN轉換為TINYINT(1),讓我們建立一個帶有BOOLEAN或BOOL列的表。

在這裡,我們正在建立一個包含BOOLEAN列的表。建立表的查詢如下所示:

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

現在使用SHOW CREATE命令檢查上述表的DDL。查詢如下所示:

mysql> show create table BoolOrBooleanOrTinyintDemo\G

以下是輸出:

*************************** 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)

檢視isvalidAddress列,資料型別BOOLEAN在內部轉換為tinyint(1)。現在您可以檢查true字面量將由1表示,false字面量由0表示。在表中插入一些帶有true和false字面值的記錄。插入記錄的查詢如下所示:

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)

使用select語句顯示錶中的所有記錄。顯示所有記錄的查詢如下所示:

mysql> select *from BoolOrBooleanOrTinyintDemo;

以下是輸出:

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

檢視上面的示例輸出,true表示為1,false表示為0。

在PHP中,如果使用true,它將表示為1,false將表示為0。

檢視下面的PHP程式碼。在這裡,我已經設定了變數“isValidAddress”。值為1,這意味著它將if條件評估為true,並且只執行if語句的主體。檢查下面的程式碼:

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

這是程式碼的快照:

以下是輸出:

如果將變數“isValidAddress”更改為值0。這意味著它將if條件評估為false,並且只執行else語句的主體。以下是程式碼:

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

這是程式碼的快照:

以下是輸出:

更新於:2019年7月30日

3K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告