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

PHP PDO Bit(1) gibt falschen Datentyp zurück

Sie verwenden ein Bit(1)-Feld, um einen booleschen Wert (TRUE) darzustellen /FALSE ).

Der Datenbankclient ordnet Bitfelder (die größer als ein Bit sein können) Strings zu, in denen ein Zeichen ein Oktett darstellt.

Sie können dann einfach Ihr Bit(1)-Feld als PHP-String über ord() verwenden funktionieren, da sie die Zeichenfolge als einzelnes Oktett behandelt:

if (ord($Site_Approved)) {
     ...
}

Sie können $Site_Approved nicht verwenden direkt, weil es ein String ist und immer TRUE ergeben würde unabhängig davon, ob das erste Bit gesetzt ist oder nicht.

Alternativ können Sie den Datenbankwert in der SQL-Abfrage bereits in eine Dezimalzahl umwandeln, die möglicherweise das ist, wonach Sie suchen:

s.Site_Approved+0 AS Site_Approved

Dezimalwerte im Bereich von 0 bis 1 verhalten sich sehr ähnlich wie die booleschen Werte von PHP (sie teilen nur nicht den Typ, der Rest ist gleich).