SQL位类型与PHP条件


SQL bit type versus PHP conditions

今天我遇到一个错误。我的数据库中有几个列是BIT类型的。我得到了这些值(0/1),当我试图用简短的if语句进行比较时,我总是得到false。

$cat->is_visible = ($cat_vis == 1) ? TRUE : FALSE;

即使$cat_vis在DB中为1,这也会导致FALSE。你知道为什么会这样吗?

我认为您在尝试直接比较BIT类型时会遇到问题。如果在查询中强制转换字段,会发生什么情况?

例如

SELECT `is_visible`+0 AS is_visible FROM cat;

SELECT CAST(`is_visible` AS UNSIGNED) AS is_visible FROM cat;

位用b'1'或'true/false'或二进制表示法表示。尝试使用位表示进行查询

SELECT cols FROM tablename WHERE bit_column = (1)

然后引用它。

试试这个:

$cat->is_visible = ($cat_vis === '1') ? true : false;