怪异的字符显示

时间:2010-02-12 01:16:43

标签: php mysql

我将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请求)。

2 个答案:

答案 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) ...