Я использую mysql_fetch_assoc($query)
, одно из полей бит возвращается, которое должно быть истинным.
Проблема в том, что мне также нужно вывести это в xml, и это незаконный символ xml. кодировкой для таблицы db является utf-8. почему это происходит?
Используйте функцию BIN в SELECT.
http://dev.mysql.com/doc/refman/5.0/en/bit-field-literals.html
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.
Вы также можете использовать: ord($bitvalue)
.