garip bit karakter ekran

2 Cevap php

I am storing x and y as bits in mysql database, upon fetch the record using php fetch_assoc, the display is gobbled. And I can't find a way to test the value to see if it's true or false... I tried using if($val), if($val==true) if($val===true), if $val is false, all 3 tests still returns true. any idea? [x] => � [y] =>

Aşağıdaki cevap için teşekkürler, ben şimdi kullanın:

function mysql_bit($bit) {

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

mysql bit değeri ve (örneğin http isteği) düzenli dize / int değeri işlemek için hem.

2 Cevap

Bu Mesaja yardımcı olur mu?

I looooong zaman önce bu sorunu vardı ... bir ASCII '1 'veya '0' olarak okunur. Ben zaman benim çözüm tam olarak güzel olduğunu sanmıyorum, ama ben ne iddia böylece artık kaynak yok!

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

Aynı sorun vardı, SO aradı ve bu yazı geldi ...

Hangi sırayla, mysql kılavuzda this section götürdü.

Sen bit değerlerini ayarlarken böyle bir şey yapmanız gerekir:

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

Yani '0 'yerine karakterin 0'dan biraz değerdir mysql söyler.

Aynı şekilde, okuma yerine karakter 0 veya 1'den ikili verileri verir, ancak bunu typecasting yapabilirsiniz:

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

Yoksa hepimiz sadece geri tinyint(1) kullanarak gidebilirsiniz ...