Mysql
 sql >> Base de données >  >> RDS >> Mysql

PHP PDO Bit(1) renvoie un type de données erroné

Vous utilisez un champ Bit(1) pour représenter une valeur booléenne (TRUE /FALSE ).

Le client de base de données mappe les champs de bits (qui peuvent être supérieurs à un bit) sur des chaînes dans lesquelles un caractère représente un octet.

Vous pouvez simplement utiliser votre champ Bit(1) comme chaîne PHP via le ord() fonction car elle traite la chaîne comme un seul octet :

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

Vous ne pouvez pas utiliser $Site_Approved directement parce que c'est une chaîne et qu'elle serait toujours évaluée à TRUE peu importe si son premier bit est défini ou non.

Alternativement, vous pouvez déjà convertir la valeur de la base de données dans la requête SQL en un nombre décimal, ce qui pourrait être ce que vous recherchez :

s.Site_Approved+0 AS Site_Approved

Les valeurs décimales comprises entre 0 et 1 se comportent de manière très similaire aux booléens de PHP (ils ne partagent tout simplement pas le type, le reste est le même).