Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

PHP 및 MySQL에서 '부울' 값을 처리하는 방법은 무엇입니까?

<시간/>

우리는 MySQL 버전 8.0.12를 사용하고 있습니다. 먼저 MySQL 버전을 확인하겠습니다.

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

MySQL에서 Boolean을 처리하려면 BOOL, BOOLEAN 또는 TINYINT(1)를 사용할 수 있습니다. BOOL 또는 BOOLEAN을 사용하는 경우 MySQL은 내부적으로 이를 TINYINT(1)로 변환합니다.

BOOL 또는 BOOLEAN 데이터 유형에서 true 리터럴을 사용하면 PHP/C/C++ 언어에서와 같이 MySQL은 이를 1로, false 리터럴을 0으로 나타냅니다.

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);
}

다음은 코드 스냅샷입니다.

PHP 및 MySQL에서  부울  값을 처리하는 방법은 무엇입니까?

다음은 출력입니다.

PHP 및 MySQL에서  부울  값을 처리하는 방법은 무엇입니까?

변수 'isValidAddress'를 값 0으로 변경하면 if 조건이 false로 평가되고 else 문의 본문만 실행됩니다. 다음은 코드입니다:

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

다음은 코드 스냅샷입니다.

PHP 및 MySQL에서  부울  값을 처리하는 방법은 무엇입니까?

다음은 출력입니다.

PHP 및 MySQL에서  부울  값을 처리하는 방법은 무엇입니까?