处理';布尔值';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的别名,如前所述