MySQL 如何在PHP和MySQL中处理Boolean值
我们正在使用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数据类型中,如果使用真字面量,则MySQL将其表示为1,如果使用假字面量,则表示为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)。现在您可以检查真字面量将由1表示,假字面量将由0表示。在表中插入一些具有真和假字面值的记录。插入记录的查询如下:
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条件并仅执行if语句体。检查以下代码:
$isValidAddress = 1;
if($isValidAddress)
{
echo 'true is represented as ';
echo ($isValidAddress);
}
else
{
echo 'false is represented as ';
echo ($isValidAddress);
}
这里是代码快照:
以下是输出结果:
如果您将变量“isValidAddress”更改为值0。这意味着它评估if条件为假,并仅执行else语句的主体。下面是代码:
$isValidAddress=0;
if($isValidAddress)
{
echo 'true被表示为 ';
echo ($isValidAddress);
}
else
{
echo 'false被表示为 ';
echo ($isValidAddress);
}
这是代码的快照:
以下是输出:
阅读更多:MySQL 教程