Visualizzazione dei risultati da 1 a 7 su 7

Discussione: MYSQL Campo boolean

  1. #1

    MYSQL Campo boolean

    Ciao a tutti che "tipo" dovrei mettere a un campo per avere un risultato booleano: true o false?

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    il suggerimento migliore in assoluto è: non farlo.
    per ragioni di portabilità (i booleani sono i peggiori in assoluto, addirittura peggio delle date) usa semplicemente un intero.
    falso=0
    vero=1

    fine dei problemi

    se ti vuoi complicare la vita c'è proprio l'enum
    enum('true','false') ma te lo stra-sconsiglio

  3. #3
    Grazie del consiglio prezioso userò un INT!

  4. #4
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    tinyint(1)

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    Mi accodo a questa discussione perchè sono da poco passato a MySQL (da .mdb) e pensavo di fare una figata utilizzando il campo ENUM:

    attivo = ENUM ('true','false')

    nelle prove però si è evidenziato che il campo non risponde allo stesso modo al true/false, infatti se faccio

    Codice PHP:
    if ($row['attivo']) {...} 
    mi aspetterei in caso di 'false' nel campo che la condizione restituisse appunto false, invece considera il campo sempre a true in quanto è presente del testo.

    Comportamento diverso (e corretto) se il campo viene così settato:

    attivo = ENUM ('0','1')

    Comportamente corretto anche con TINYINT(1) (come segnalato da Razorblade).

    Quale consigliate voi per evitare problemi?

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2011
    Messaggi
    1,469
    Originariamente inviato da aasmdaa
    Mi accodo a questa discussione perchè sono da poco passato a MySQL (da .mdb) e pensavo di fare una figata utilizzando il campo ENUM:

    attivo = ENUM ('true','false')

    nelle prove però si è evidenziato che il campo non risponde allo stesso modo al true/false, infatti se faccio

    Codice PHP:
    if ($row['attivo']) {...} 
    mi aspetterei in caso di 'false' nel campo che la condizione restituisse appunto false, invece considera il campo sempre a true in quanto è presente del testo.

    Comportamento diverso (e corretto) se il campo viene così settato:

    attivo = ENUM ('0','1')

    Comportamente corretto anche con TINYINT(1) (come segnalato da Razorblade).

    Quale consigliate voi per evitare problemi?
    se vuoi controllare se c'è "true" devi fare un confronto a stringa, e così "false".
    potresti metterci "pippo" e "pluto"
    ---
    La soluzione che consiglio è quella che ho già messo: flag intero e passa la paura (ed è di gran lunga la migliore per la portabilità)

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2004
    Messaggi
    1,344
    E così ho fatto: TINYINT(1)

    grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.