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

PHP PDO Bit(1) restituisce un tipo di dati errato

Stai utilizzando un campo Bit(1) per rappresentare un valore booleano (TRUE /FALSE ).

Il client del database mappa i campi di bit (che possono essere più grandi di un bit) su stringhe in cui un carattere rappresenta un ottetto.

Puoi semplicemente usare il tuo campo Bit(1) come stringa PHP tramite ord() funzione in quanto tratta la stringa come un singolo ottetto:

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

Non puoi utilizzare $Site_Approved direttamente perché è una stringa e verrebbe sempre valutata TRUE indipendentemente dal fatto che il primo bit sia impostato o meno.

In alternativa, puoi eseguire il cast del valore del database nella query SQL già su un decimale che potrebbe essere quello che stai cercando:

s.Site_Approved+0 AS Site_Approved

I valori decimali nell'intervallo da 0 a 1 si comportano in modo molto simile ai booleani di PHP (semplicemente non condividono il tipo, il resto è lo stesso).