Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
处理';布尔值';PHP&;MySQL_Php_Mysql_Boolean - Fatal编程技术网

处理';布尔值';PHP&;MySQL

处理';布尔值';PHP&;MySQL,php,mysql,boolean,Php,Mysql,Boolean,目前我正在使用Tinyint(1)来表示MySQL数据库中的Boolean值,我真的不喜欢这样。那么,如何通过PHP在MySQL数据库中存储和检索Boolean值呢 如何在WHERE子句中使用它,以及如何在INSERT、UPDATE查询中正确分配值 当我把它放回到PHP上时,它是TRUE,TRUE,或者干脆是1,如果我要用=来检查的话 从Tinyint(1)迁移到BOOLEAN时,您是否遇到过任何问题 提前感谢。:) 更新: 我知道Tinyint(1)与Boolean相同,但是我想处理Boole

目前我正在使用
Tinyint(1)
来表示MySQL数据库中的
Boolean
值,我真的不喜欢这样。那么,如何通过
PHP
MySQL
数据库中存储和检索
Boolean
值呢

如何在
WHERE
子句中使用它,以及如何在
INSERT、UPDATE
查询中正确分配值

当我把它放回到PHP上时,它是
TRUE
TRUE
,或者干脆是
1
,如果我要用
=
来检查的话

Tinyint(1)
迁移到
BOOLEAN
时,您是否遇到过任何问题

提前感谢。:)

更新:


我知道
Tinyint(1)
Boolean
相同,但是我想处理
Boolean
数据类型,而不是
Tinyint(1)
。这就是为什么我要问这个问题。

对于布尔值,不要使用
==FALSE
-该值已经是布尔值(除非函数要求您使用
==
,如
strpos()
)。这个值是布尔值——从技术上讲,它是一个整数,但PHP是一种动态语言,所以它不是问题

考虑
preg_match()
函数-它返回匹配数(整数)

你愿意写这个吗

if (preg_match('/\bregexp?\b/', $variable) === 1)
还是那样

if (preg_match('/\bregexp?\b/', $variable))
显然,没有显式
==1
的方式更好。您询问它是否匹配,而不是它是否有0个匹配项。另外,如果您认为
==1
更安全,为什么不
==1===TRUE

当然,可以使用
(bool)
将值转换为布尔值


此外,在某些语言(如C或Perl)中,布尔值和数字之间没有区别。MySQL没有布尔数据类型。Tinyint(1)非常接近。在PHP中处理这个问题很简单

If (1) echo 'true'; // is the same as if (true)
// Just as
if (0) echo 'false'; // is the same as if (false)
如果你真的想要一个布尔值,你可以

// $mysql_data is tinyint value from db
$boolean = $mysql_data ? true : false;
// Now you have your boolean as $boolean

BOOL,BOOLEAN
在MySQL中只是
TINYINT(1)
的同义词。谢谢,是的,我知道这一点,但我想在我的PHP端处理
BOOLEAN
,而不是
TINYINT
,这就是为什么我要问这个问题……尽管这取决于你的方法,插入任何int类型时,您可能需要将
true
false
关键字强制转换为
int
。我确实相信某些形式的预处理语句会为您做出这样的安排,但是如果您的查询是内联的,那么这是必要的。在MySQL中,值TRUE和FALSE仅仅是1和0的别名,如前所述