sql >> Base de Datos >  >> RDS >> Mysql

PHP PDO Bit (1) devuelve un tipo de datos incorrecto

Está utilizando un campo Bit(1) para representar un valor booleano (TRUE /FALSE ).

El cliente de la base de datos asigna campos de bits (que pueden tener más de un bit) en cadenas en las que un carácter representa un octeto.

Puede simplemente usar su campo Bit (1) como cadena PHP a través de ord() funciona ya que trata la cadena como un solo octeto:

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

No puedes usar $Site_Approved directamente porque es una cadena y siempre se evaluaría como TRUE independientemente de si su primer bit está configurado o no.

Alternativamente, puede convertir el valor de la base de datos en la consulta SQL ya a un decimal que podría ser lo que está buscando:

s.Site_Approved+0 AS Site_Approved

Los valores decimales en el rango de 0 a 1 se comportan de manera muy similar a los valores booleanos de PHP (simplemente no comparten el tipo, el resto es igual).