sql >> Databasteknik >  >> RDS >> Mysql

PHP PDO Bit(1) returnerar fel datatyp

Du använder ett Bit(1)-fält för att representera ett booleskt värde (TRUE /FALSE ).

Databasklienten mappar bitfält (som kan vara större än en bit) till strängar där ett tecken representerar en oktett.

Du kan än bara använda ditt Bit(1)-fält som PHP-sträng via ord() fungerar eftersom den behandlar strängen som en enda oktett:

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

Du kan inte använda $Site_Approved direkt eftersom det är en sträng och det skulle alltid utvärderas till TRUE oavsett om den första biten är inställd eller inte.

Alternativt kan du casta databasvärdet i SQL-frågan redan till en decimal som kan vara det du letar efter:

s.Site_Approved+0 AS Site_Approved

Decimalvärden i intervallet 0 till 1 beter sig väldigt likt PHPs booleaner (de delar bara inte typen, resten är densamma).




  1. KONTROLLERA begränsning på födelsedatum?

  2. Hur får man första och sista posten från en sql-fråga?

  3. Skapa Lucene Index i databasen med JdbcDirectory

  4. Kan jag få en unik TIMESTAMP för varje post i MySQL