2010-02-12 3 views
2

Я храню x и y как биты в базе данных mysql, после извлечения записи с использованием php fetch_assoc, дисплей сожжен. И я не могу найти способ проверить значение, чтобы увидеть, является ли оно истинным или ложным ... Я попытался использовать if ($ val), if ($ val == true) if ($ val === true), если $ val является ложным, все 3 теста по-прежнему верны. Есть идеи? [х] => [у] =>странный символ символа бита

спасибо за ответ ниже, я теперь использовать:

 
function mysql_bit($bit) { 

    if(ord($bit) == 0 || ord($bit) == 48)return false; 
    return true; 
} 

обрабатывать как MySQL разрядное значение и регулярное строку/значение INT (из запроса HTTP для пример).

ответ

1

Помогает ли это сообщение?

Я имел этот вопрос looooong время назад ... читается как ASCII '1' или '0'. Я не думаю, что мое решение в то время было таким же приятным, но у меня больше нет источника, поэтому я буду притворяться!

function mysql_bit($bit) { 
    return ord($bit) == 1 || $bit == 1; 
} 
+0

Вы ****** БОГ !!! он работает и спас меня от разочарования! – user121196

+0

На самом деле грустно ... если бы я использовал php за последние 3 года, я бы вспомнил об этом и не должен был подбирать кого-то другого;) Если это сработает, отметьте его решением, чтобы другие знали. –

+0

oops Я сказал, что слишком рано, он отлично работает при тестировании значения, которое я получаю из базы данных. Проблема в том, что на моей php-странице я также получаю значение от $ _REQUEST ['variable'], когда оно равно 1 (например, test.php? Test = 1), mysql_bit возвращает false !! любое решение? – user121196

0

Если бы та же проблема, что искали SO, и наткнулся на этот пост ...

Который, в свою очередь, привело меня к this section в руководстве по MySQL.

Вам нужно сделать что-то вроде этого при установке битовых значений:

update `t` set `bitfield`=b'0' where ... 

Это говорит MySQL, что «0» является значение бита, а не символ 0.

Аналогично, чтение дает бинарное данные, а не символы 0 или 1, но вы можете его типаж:

select cast(`bitfield` as unsigned) from `t` where ... 

или мы можем просто вернуться к использованию tinyint(1) ...

Смежные вопросы