2011-10-05 20 views
11

Moja tabela ma kolumnę isSuccessful, ustawić typ danych jako wartość logiczna (0 oznacza fałsz, 1 wskazuje, true) i domyślnie 0.Jak mogę zaktualizować wartości logiczne w mysql?

Ale gdy chcę zaktualizować tę kolumnę za pomocą php,

UPDATE .......... SET isSuccessful = 1 WHERE ......... 

to nie działa.

Próbowałem ustawić isSuccessful jako 1, prawda, tak, ale żaden z nich nie zadziała.

Jak mogę zmienić wartości isSuccessful?

+4

To, co opisujesz, powinno działać. Musisz robić coś złego. Opublikuj pełne zapytanie. – Hammerite

+4

Definiuj "nie działa". Czy dostaję błędy? Czy możesz ustawić wartość ręcznie w interfejsie administratora? Czy na pewno twoja klauzula "WHERE" pasuje do czegokolwiek? – deceze

+0

Jakie błędy dostałeś? 'SET is Soucesful = 1' działa dla mnie od ... zawsze. – Coyote

Odpowiedz

16

Wystarczy proste zapytanie o aktualizację. Pola logiczne, jeśli poprawnie przywołuję, są po prostu polami tinyint (1) i akceptują aliasy dla 1 i 0 odpowiednio jako prawdziwe i fałszywe (jako łańcuchy). Poniższe powinny być w porządku. Być może, jeśli opublikowałeś swoje dokładne zapytanie, a nie przerobioną wersję, ktoś może zauważyć problem?

UPDATE `table` SET `isSuccessful` = 1 WHERE `column` = 'criteria' 
+0

Od http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html: 'Od wersji MySQL 5.0.3 dostępny jest typ danych BIT do przechowywania wartości pól bitowych. (Przed 5.0.3, MySQL interpretuje BIT jako TINYINT (1).) W MySQL 5.0.3, BIT jest obsługiwany tylko dla MyISAM. MySQL 5.0.5 rozszerza obsługę BIT do MEMORY, InnoDB, BDB i NDBCLUSTER. ' –

+1

Możesz również użyć:' SET isSupcessful = b'1'' –

+1

@ ypercube Zakłada się, że OP ustawi typ danych na BIT. Jednakże zakłada się, że typ danych BOOLEAN został ustawiony, co oznacza, że ​​jest to pole TINYINT. BOOL, BOOLEAN Te typy są synonimami dla TINYINT (1). Wartość zero jest uważana za fałszywą. Niezerowe wartości są uważane za prawdziwe. Od http://dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html Czy to znaczy, że 'set isSuccessful = b'1'' nie zadziałałby? –

0

Upewnij się umieścić tę postać „`”, który jest ten sam klucz z„~”na lewym wielkości klawisza„1”na klawiaturze, że powinien to zrobić, jeśli za pomocą PHP + MySQL pod Linuksem .

+0

'jest opcjonalne .. – Qix

+0

Nie każdy ma układ US – beppe9000