PHP чтение битового поля MySQL, возвращая странный символ - PullRequest
8 голосов
/ 26 мая 2010

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

Ответы [ 3 ]

14 голосов
/ 27 мая 2010

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.

7 голосов
/ 21 октября 2012

Вы также можете использовать: ord($bitvalue).

4 голосов
/ 26 мая 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...