LINUX.ORG.RU

php, mysql, field bit type


0

1

Странная вещь, в денвере php поля типа bit обрабатывает как число. То есть $b = $row['bit_field'] будет равно 0 или 1

На centos с php 5.3.3   './configure' '--with-mysql' '--with-mcrypt' '--enable-mbstring' '--with-imap' '--with-kerberos' '--with-imap-ssl' '--with-libjpeg' '--with-libpng' '--with-gd'

$b = $row['bit_field'] будет равно chr(0) или chr(1)

От какой и чьей опции это зависит?

-- Спасибо



Последнее исправление: ch_cat (всего исправлений: 1)
Ответ на: комментарий от rainy

в случае денвера это просто цифры 1 и 0.

а вот в случае нормального php это именно символьное значение гугль говорит, что у всех именно так, что не удивительно.

ch_cat
() автор топика
Ответ на: комментарий от ch_cat

> гугль говорит, что у всех именно так, что не удивительно.

у меня тоже возвращает chr(1) или chr(0)

в случае денвера это просто цифры 1 и 0.

дело в том, что mysql_fetch_assoc возвращает массив _строк_. мне не понятно как он делал приведение типа автоматически.

ты уверен что _сразу_ после выхода с mysql_fetch_assoc получил _число_ ?

у меня есть подозрение, что приведение типа происходило где-то еще, и собственно там и проблема.

rainy
()
Ответ на: комментарий от rainy

Дело в том, что я всю разработку вёл на denwer, все отлично работал. Щас перекинул на продакшн, а там ничерта. Начал разбираться, наткнулся на эту штук. То есть на денвере у меня код работает - на продакшине нет. Можете представить моё удивление :)

вот кусок, который работает на denwere:

while ($row = mysql_fetch_assoc($res)){ if ($row['Admin'] == 0) { i++; ... }

на продакшене он работает, если сделать так:

while ($row = mysql_fetch_assoc($res)){ if (ord($row['Admin']) == 0) { i++; ... }

ch_cat
() автор топика
Ответ на: комментарий от ch_cat

а денвер случаем не с php 5.2 был? ;) в 5.3 выпили libmysql и написали свой клиент.

ну если проект ваш, и вы можете сделать приведение типа, то сделайте и не парьтесь. в первый раз что ли проблемы при деплое? )

rainy
()
Ответ на: комментарий от rainy

Я так и подумал, что это разницы в библиотеке mysql сказывается. И не парюсь я вовсе, поменял везде тип на tinyint, пох :)

-- Спасибо

ch_cat
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.