今天我遇到了一个bug。我的数据库中的列数很少,BIT
类型。我得到了这些值(0/1)当我试图比较它时,如果声明我总是假的。
$cat->is_visible = ($cat_vis == 1) ? TRUE : FALSE;
即使$ cat_vis在DB中得到1,结果也为FALSE。任何想法为什么会这样?
答案 0 :(得分:0)
我认为您在尝试直接比较BIT
类型时会遇到问题。如果在查询中转换字段会发生什么?
e.g。
SELECT `is_visible`+0 AS is_visible FROM cat;
或
SELECT CAST(`is_visible` AS UNSIGNED) AS is_visible FROM cat;
答案 1 :(得分:0)
位用b'1'或'true / false'或二进制表示法引用。使用位表示法尝试查询
SELECT cols FROM tablename WHERE bit_column = (1)
然后参考。
答案 2 :(得分:0)
试试这个:
$cat->is_visible = ($cat_vis === '1') ? true : false;