2011-01-21 20 views
16

Chcę zapisać moją wartość jako boolean w mojej bazie danych mysql. Ale jakoś nie jestem w stanie go zapisać, mysql automatycznie zapisuje go w typie tinyInt. Podaj mi również domyślne wartości boolean. jak przekazujemy wartości?Boolean Field w mysql db

+3

1 = true 0 = false – BvdVen

Odpowiedz

25

W MySQL BOOLEAN typ jest synonimem dla TINYINT. Nie ma dedykowanego typu BOOLEAN. Przypisane wartości to te dla TINYINT, tj. 0 dla fałszu, 1-255 (najlepiej 1) dla wartości true.

+0

Ale dlaczego bool i tinyint są różne. Jeśli są takie same, powinien być jeden –

+0

Nie ma "BOOL". Jest tylko "TINYINT", który można zapisać jako "BOOL". – Mchl

+0

Mam to teraz, ale byłem po prostu zdezorientowany, dlaczego zatrzymali bool w mysql, jeśli możemy użyć tinyInt.Bool powinien zostać usunięty z listy. –

6

MySQL tak naprawdę nie ma typu BOOLEAN, jeśli utworzysz kolumnę BOOLEAN, to faktycznie będzie to TINYINT.

Traktowanie TINYINT jako wartości logicznej nie jest zbyt problematyczne, jeśli traktujemy 0 jako fałszywe, a nie-0 jako prawdziwe, to wszystko jest w porządku. W PHP instrukcja taka jak if ($column) zwróci wartość true, jeśli $ column jest dowolną wartością z wyjątkiem 0 lub wartością, która ma wartość 0. Jeśli potrzebujesz jawnie być boolem, możesz go z łatwością przekonwertować, wykonując $column = ($column != 0);

+1

Awansuj do ostatniego $ column = ($ column! = 0); –