如何在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+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.