sql >> Database teknologi >  >> RDS >> Mysql

PHP PDO Bit(1) returnerer forkert datatype

Du bruger et Bit(1)-felt til at repræsentere en boolesk værdi (TRUE /FALSE ).

Databaseklienten kortlægger bitfelter (som kan være større end én bit) til strenge, hvor ét tegn repræsenterer en oktet.

Du kan end blot bruge dit Bit(1)-felt som PHP-streng via ord() funktion, da den behandler strengen som en enkelt oktet:

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

Du kan ikke bruge $Site_Approved direkte, fordi det er en streng, og det vil altid evalueres til TRUE uanset om den første bit er indstillet eller ej.

Alternativt kan du caste databaseværdien i SQL-forespørgslen allerede til en decimal, som måske er det, du leder efter:

s.Site_Approved+0 AS Site_Approved

Decimalværdier i området fra 0 til 1 opfører sig meget som PHP's booleaner (de deler bare ikke typen, resten er den samme).




  1. Hvordan tilføjer man mode=mysql til indlejret H2 DB i Spring Boot 1.4.1 til @DataJpaTest?

  2. mysql-forespørgsel for at vælge alt undtagen

  3. Giver script timeout overført ved databaseimport

  4. Behøver jeg virkelig at gøre mysql_close()