Mysql
 sql >> Datenbank >  >> RDS >> Mysql

php liest mysql-Bitfeld und gibt seltsames Zeichen zurück

MySQL gibt buchstäblich 0x00 und 0x01 für die Bitfelder zurück. Sie müssen sie entweder auf der PHP-Seite in etwas Passendes umwandeln

$bitvalue = ($bitvalue == 0x01) ? 'TRUE' : 'FALSE'

oder in der Abfrage:

SELECT CAST(bitfield AS unsigned int)
FROM ...

Dadurch wird es in ein int konvertiert und als '0' und '1' (0x48 und 0x49) zurückgegeben.

Nur nebenbei, einige der älteren MySQL-Bibliotheken unterstützen echte Bitfelder in MySQL vor dem Datum (als sie stillschweigend in char(1) konvertiert wurden) und werden die Werte zerstören, wenn Sie also bei einem dieser Dinosaurier stecken bleiben Versionen müssen Sie möglicherweise die Abfrageversion anstelle der PHP-seitigen Konvertierung verwenden.