我正在使用mysql_fetch_assoc($query)
,其中一个位字段返回,这应该是真的。
问题是我还需要将它输出到xml,它是一个非法的xml字符。
db表的charset是utf-8。为什么会这样?
答案 0 :(得分:14)
MySQL实际上为位字段返回0x00和0x01。你必须将它们转换成适合PHP端的东西
$bitvalue = ($bitvalue == 0x01) ? 'TRUE' : 'FALSE'
或在查询中:
SELECT CAST(bitfield AS unsigned int)
FROM ...
将其转换为int并返回为'0'和'1'(0x48和0x49)。
除此之外,一些较旧的mysql库预先支持MySQL中的实际位字段(当它们被静默转换为char(1)时)并且会丢弃值,所以如果你遇到了一个在那些恐龙版本中,您可能必须使用查询版本而不是PHP端转换。
答案 1 :(得分:7)
您还可以使用:ord($bitvalue)
。
答案 2 :(得分:4)
在SELECT中使用BIN功能。
http://dev.mysql.com/doc/refman/5.0/en/bit-field-literals.html