在PHP和MySQL中处理“布尔”值

vsaztqbk  于 2022-11-28  发布在  PHP
关注(0)|答案(3)|浏览(159)

目前我使用Tinyint(1)来表示MySQL数据库中的Boolean值,我真的不喜欢这样。那么,我如何通过PHPMySQL数据库中存储和检索Boolean值呢?
如何在WHERE子句中使用它,以及如何在INSERT, UPDATE查询中正确赋值?
当我在PHP上使用它时,它是TRUEtrue,或者简单地是1,如果我用===检查它的话?
另外,您在从Tinyint(1)迁移到BOOLEAN时是否遇到过任何问题?
提前感谢。:)

更新日期:

我知道Tinyint(1)Boolean是一样的,但是我想处理Boolean数据类型而不是Tinyint(1),这就是我问这个问题的原因。

ifmq2ha2

ifmq2ha21#

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
juzqafwq

juzqafwq2#

对于布尔值,不要使用=== 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,布尔和数字之间没有区别,它只是工作。

vlf7wbxs

vlf7wbxs3#

<select name="can_get" id="can_get" class="form-control">
                <option <?php if($can_get== "1"){ echo "selected"; } ?> 
value="1">True</option>
                <option <?php if($can_get== "0"){ echo "selected"; } ?> 
value="0">False</option>
            </select>

相关问题