0

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

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

即使 $cat_vis 在 DB 中得到 1,这也会导致 FALSE。任何想法为什么会这样?

4

3 回答 3

0

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

SELECT cols FROM tablename WHERE bit_column = (1)

然后参考它。

于 2013-08-05T08:33:12.780 回答
0

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

例如

SELECT `is_visible`+0 AS is_visible FROM cat;

或者

SELECT CAST(`is_visible` AS UNSIGNED) AS is_visible FROM cat;
于 2013-08-04T21:48:50.270 回答
0

尝试这个:

$cat->is_visible = ($cat_vis === '1') ? true : false;
于 2014-10-08T11:19:28.947 回答