2010-10-14 15 views
24

Wydaje się, że powinienem używać tinyint(); ale nie wiem, jak to wdrożyć?Jak mogę dodać pole logiczne do MySQL?

Pytanie jest jaki jest Twój zalecenie czy muszę mieć pole logiczną w MySQL DB i modyfikować wartości its PHP

+0

logiczny pole może być również interpretowane jako 1 i 0, tak posiadanie pola tinyint spowoduje szybszą bazę danych. A jeśli indeksujesz to jeszcze szybciej. Wszystkie poniższe odpowiedzi są dla Ciebie wartościowe! @Felix @Matthew @Haim dobra robota –

+0

@etbal Tak, naprawdę, wszystko bardzo pomocne! – Trufa

Odpowiedz

43

Tak, TINYINT(1) jest sposobem na ... można również użyć BOOL or BOOLEAN, które są synonimami (więc nie robi różnica).

0 ocenia się false PHP i 1 do true (w rzeczywistości, dowolną inną liczbę niż 0 ocenia się true, ale 1 zwykle używane).

+1

Dzięki Bardzo przydatne, już wdrażanie! – Trufa

+0

@Felix Kling nie ma żadnej innej liczby niż 0 oznacza true http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html –

+0

@Viswanathan: Właściwie mówiłem o PHP w tym przypadku, a nie MySQL. –

2

Jesteś poprawne, że ogólne rozwiązanie jest tinyint(1). Można użyć BOOL w skrócie:

CREATE TABLE example (
     flag BOOL 
     ); 
2

masz możliwość tinyint (1) lub bitu

wkładki 0 lub 1 w tej dziedzinie

zobaczyć ten post różnicy:

Tinyint vs Bit

+0

Dzięki za wyjaśnienia! – Trufa

4

Wolę nie bool, BIT, TINYINT (1). ponieważ żaden z nich nie jest w rzeczywistości boolean. Można sprawdzić poniższy link dla 'dlaczego':

http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html

bym lepiej użyć: ENUM ('false', 'true') not null - jako typ danych. Możesz przekazać "true" lub "false" (jako łańcuchy) z PHP. A przechowywanie go zajmie tylko 1 bajt!

+0

Dlaczego nie ENUM ("0", "1") zamiast tego – tormuto

+2

W rzeczywistości ciąg '' false'' jest, jak na ironię, truey w PHP. – jonbaldie

+0

@tormuto tak, możesz. to pomogłoby w automatycznym pisaniu w PHP podczas czytania. Ale z ENUM nie jest to bezpieczną praktyką, ponieważ możesz zapomnieć o przekazywaniu ciągów z PHP. Co by się stało, gdyby ktoś omyłkowo ogłosił ENUM ("1", "0")? Widziałem wiele kodów takich jak ("tak", "nie"). – Muktadir

0

myślę skoro faktycznie chce wymusić wartość logiczną (0,1) ograniczenie na polu tabeli mysql, najlepszym strzelcem jest Strojenie ENUM

CREATE TABLE table_name(
    boolean_field_name ENUM('0', '1') 
); 
Powiązane problemy