今天我遇到一个错误。我的数据库中有几个列是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;