php, читающий mysql битовое поле, возвращая странный символ

Я использую mysql_fetch_assoc($query), одно из битового поля возвращается, чтобы быть, который должен, предположительно, быть верным.
Проблема состоит в том, что я также должен произвести это к xml, и это - недопустимый xml символ. набор символов для таблицы базы данных является utf-8. почему это происходит?

8
задан miku 26 May 2010 в 16:12
поделиться

2 ответа

Используйте функцию BIN в вашем SELECT.

http://dev.mysql.com/doc/refman/5.0/en/bit-field-literals.html

4
ответ дан 5 December 2019 в 06:36
поделиться

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.

14
ответ дан 5 December 2019 в 06:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: