【发布时间】:2015-02-26 12:51:13
【问题描述】:
数据库表中有一个bit(1) 类型的列。但它没有像我预期的那样工作。
问题是
$invitee = new Invitee();
$invitee->name = "name1";
$invitee->email = "example@mail.com";
$invitee->isActive = 0; // "b'0'", '0', false, are also not working
$invitee->save();
我需要在isActive 列中输入一个零0,但每次我尝试使用0 添加记录时,它的值1。
我在here. 中发现了一个问题。但答案并未描述问题的原因。很高兴有人能解释这个问题。
【问题讨论】:
-
你确定你想要
bit似乎是boolean吗? -
是的,不能更改数据库:(
-
你试过
$invitee->isActive = "\0001";吗? MySQL 中的 BIT 的工作方式与 bool 不同,因此您无法检查 1 或 2。BIT(m) 值的范围为 1-64。如果您只插入一个 1,它将用零填充,例如,将值 b'101' 分配给 BIT(6) 列实际上与分配 b'000101' 相同。