Dec
3
BIT полетата в MySQL
at
17:37 by
nofearinc
Category: PHP
Използвам BIT типа в MySQL за представяне на булеви данни - стойности за истина или лъжа. В Java успешно парсвах такъв тип полета към булеви стойности - за вход и за изход, чрез мапването на Hibernate. В PHP имам функция за вмъкване в една таблица, която има битово поле. Всичко работи наред - подавам 0 за false и 1 за true. И в HeidySQL нещата изглеждат чудесно.
Четенето в PHP не работи. Извежда празни полета или разни нечетими символи. is_null() и isset() също не различават полетата.
Оказа се, че типът еволюира във времето. В последните версии вече не е еквивалентен на TINYINT(1), може да съхранява брой битове за дадена стойност. Не е равносилен и на булевия тип.
За решаването на проблема в новите версии е необходима или смяна на типа (ако е възможно), или преобразуване на стойността. Най-лесният начин е с функцията ord():
$result = ord($bitvalue);
В случая $bitvalue е стойността от таблицата, а $result - 1 или 0, в зависимост от стойността (true / false).
Безподобния пост.
Related posts brought to you by Yet Another Related Posts Plugin.

















