sql >> Database >  >> RDS >> Mysql

PHP PDO Bit(1) geeft verkeerd datatype terug

U gebruikt een veld Bit(1) om een ​​booleaanse waarde weer te geven (TRUE /FALSE ).

De databaseclient wijst bitvelden (die groter kunnen zijn dan één bit) toe aan strings waarin één teken een Octet vertegenwoordigt.

Je kunt dan gewoon je Bit(1) veld als PHP string gebruiken via de ord() functie omdat het de snaar als een enkel octet behandelt:

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

U kunt $Site_Approved niet gebruiken rechtstreeks omdat het een string is en het altijd zou evalueren tot TRUE ongeacht of het eerste bit is ingesteld of niet.

Als alternatief kunt u de databasewaarde in de SQL-query al naar een decimaal casten, wat mogelijk is wat u zoekt:

s.Site_Approved+0 AS Site_Approved

Decimale waarden in het bereik van 0 tot 1 gedragen zich erg gelijkaardig aan de booleans van PHP (ze delen gewoon niet het type, de rest is hetzelfde).




  1. PostgreSQL via SSH-tunnel

  2. Login-script wordt niet uitgevoerd - Bluehost

  3. Wat is een goede manier om een ​​mysql-database te denormaliseren?

  4. Een formulier maken met de formulierwizard