Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

PHP PDO Bit(1) retorna tipo de dados errado


Você está usando um campo Bit(1) para representar um valor booleano (TRUE /FALSE ).

O cliente de banco de dados mapeia campos de bits (que podem ser maiores que um bit) em strings nas quais um caractere representa um octeto.

Você pode usar seu campo Bit(1) como string PHP através do ord() função, pois trata a string como um único octeto:
if (ord($Site_Approved)) {
     ...
}

Você não pode usar $Site_Approved diretamente porque é uma string e sempre seria avaliada como TRUE independentemente de o primeiro bit estar definido ou não.

Como alternativa, você pode converter o valor do banco de dados na consulta SQL já para um decimal que pode ser o que você está procurando:
s.Site_Approved+0 AS Site_Approved

Valores decimais na faixa de 0 a 1 se comportam de maneira muito semelhante aos booleanos do PHP (eles simplesmente não compartilham o tipo, o resto é o mesmo).