2010-10-17 7 views
3

Etrange, j'utilise Apache + PHP avec Windows. php a traité les champs de bits de mysql comme nombre: c'est travail correct;PHP champs de bits mysql

$b = $row['bit_field'] 
if ($b == 1) { 
    echo 'ok'; 
} 

avec CentOS et php 5.3.3 './configure' '--with-mysql' '--with-mcrypt' '--enable-mbstring' '--with-imap' « - avec-kerberos' '--with-imap-ssl' '--with-libjpeg' '--with-libpng' '--with-gd'mère

j'ai besoin

$b = $row['bit_field'] 
if (ord($b) == 1) { 
    echo 'ok'; 
} 

Quelle option changer il?

- Thanx

+2

Que contient '$ row [" bit_field "]'? –

+2

* "Etrange, j'utilise Apache + PHP avec Windows." * - En effet. :-) – Tomalak

+3

@Tomalak pah. Ce n'est plus 1999. Apache + Win fonctionne comme un charme :) –

Répondre

4

Si le champ que vous avez affaire à est en effet un champ de bits, alors sûrement vous devriez utiliser les opérateurs de terrain de bits pour tester ce que les bits sont mis à la valeur?

if ($b & 0X1) { echo ('Least significant bit in byte set'); } 
if ($b & 0X80) { echo ('Most significant bit in byte set'); } 
if ($b & 0X80000000) { echo ('Most significant bit in 32 bit word set'); } 

Vous pouvez les utiliser pour vérifier des bits individuels dans un champ de bits, quelles que soient les valeurs des autres bits.