如何在 PHP 和 MySQL 中处理"布尔"值?

mysqlmysqli database更新于 2024/8/9 20:28:17

如果您使用的是 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 转换为 TINYNT(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);
}

这是代码的快照:

输出结果如下:


相关文章


有用资源