Here I come, there I am.

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).

 

Share and Enjoy:
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks
  • MySpace
  • Slashdot
  • Technorati
  • TwitThis
del.icio.us Digg DZone Facebook Google Google Reader Magnolia reddit SlashDot Technorati ReadMe.ru Dobavi.com Dao.bg Lubimi.com Ping.bg Pipe.bg Svejo.net Web-bg.com

Безподобния пост.

Related posts brought to you by Yet Another Related Posts Plugin.

Comments

Leave a Reply