2012-09-30 13 views
10

Attualmente sto usando Tinyint(1) per indicare i valori Boolean nei miei database MySQL, cosa che a me non piace. Quindi, come posso archiviare e recuperare i valori Boolean nei miei database MySQL tramite PHP?Per gestire i valori "booleani" in PHP e MySQL

Come usarlo nella clausola WHERE e come assegnare correttamente il valore nelle query INSERT, UPDATE?

Quando ho indietro su PHP, è TRUE, true, o semplicemente 1, se sto andando di controllo che con ===?

Hai mai avuto problemi durante la migrazione da Tinyint(1) a BOOLEAN?

Grazie in anticipo. :)

Aggiornamento:

So che Tinyint(1) è lo stesso di Boolean, però voglio lavorare su Boolean tipo di dati invece di Tinyint(1). Ecco perché sto facendo la domanda.

+7

'BOOL, boolean' sono solo sinonimi ** ** per' TINYINT (1) 'in MySQL. –

+0

grazie, sì lo so, ma voglio lavorare su 'Boolean' nel mio lato PHP, invece di' Tinyint', è per questo che sto facendo la domanda ... – Mahdi

+0

Anche se dipende dalla tua metodologia, potresti aver bisogno per lanciare le parole chiave 'true'' false' su 'int' quando si inserisce in un qualsiasi tipo int.Credo che alcune forme di dichiarazioni preparate rendano questa soluzione per te, ma se la tua query è in linea, allora è necessario. –

risposta

15

MySQL non ha un tipo di dati booleani. Tinyint (1) è abbastanza vicino. Lavorare con questo in PHP è semplice.

If (1) echo 'true'; // is the same as if (true) 
// Just as 
if (0) echo 'false'; // is the same as if (false) 

E se davvero vuole veramente un valore booleano, si può fare

// $mysql_data is tinyint value from db 
$boolean = $mysql_data ? true : false; 
// Now you have your boolean as $boolean 
+0

grazie uomo, ora sono più alla ricerca di valori BIT BTW :) – Mahdi

+0

In MySQL, i valori TRUE e FALSE sono semplicemente alias per 1 e 0 come spiegato [in mysql docs] (https: //dev.mysql. com/doc/refman/5.7/it/numerico-tipo-overview.html) – mikewasmike

4

Con valori booleani, non utilizzare === FALSE - il valore è già booleano (a meno che la funzione non richieda l'utilizzo di ===, ad esempio strpos()). Il valore è booleanish: è tecnicamente intero, ma PHP è linguaggio dinamico, quindi non è un problema.

Considerare la funzione preg_match() - restituisce il numero di corrispondenze (numero intero).

Preferisci scriverlo?

if (preg_match('/\bregexp?\b/', $variable) === 1) 

Oppure?

if (preg_match('/\bregexp?\b/', $variable)) 

Ovviamente, il modo, senza esplicito === 1 è meglio. Chiedi se corrisponde, non se ha 0 partite. Inoltre, se pensi che === 1 sia più sicuro, perché non fare === 1 === TRUE?

Ovviamente, è possibile convertire valori in booleani utilizzando (bool) o !!.

Inoltre, in alcune lingue come C o Perl, non vi è alcuna differenza tra valori booleani e numeri. Funziona e basta.

+0

ehi, grazie! è stato davvero interessante per me! :) – Mahdi

Problemi correlati