我正在使用 mysql_fetch_assoc($query)
,其中一个位字段返回为 ,这应该是真的。
问题是我还需要将它输出到 xml,这是一个非法的 xml 字符。
数据库表的字符集是 utf-8。为什么会这样?
最佳答案
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 端转换。
关于php读取mysql位域返回奇怪的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2914740/