我将x和y存储为mysql数据库中的位,在使用php fetch_assoc获取记录后,显示被g ..而且我找不到测试值的方法来判断它是真还是假......我尝试使用if($ val),if($ val == true)if($ val === true),if $ val为false,所有3个测试仍然返回true。任何的想法? [x] => [y] =>
感谢下面的答案,我现在使用:
function mysql_bit($bit) { if(ord($bit) == 0 || ord($bit) == 48)return false; return true; }
处理mysql位值和常规字符串/ int值(例如来自http请求)。
答案 0 :(得分:1)
这篇文章有帮助吗?
我的这个问题在很久以前就已经过了......它被读作ascii'1'或'0'。我不认为我当时的解决方案完全一样好,但我不再有源,所以我会假装它!
function mysql_bit($bit) {
return ord($bit) == 1 || $bit == 1;
}
答案 1 :(得分:0)
遇到同样的问题,搜索了SO,并发现了这篇帖子......
反过来,这导致我在mysql手册中this section。
设置位值时需要执行以下操作:
update `t` set `bitfield`=b'0' where ...
告诉mysql'0'是位值而不是字符0。
同样,读取它会提供二进制数据而不是字符0或1,但您可以对其进行类型转换:
select cast(`bitfield` as unsigned) from `t` where ...
或者我们都可以回到使用tinyint(1)
...