Soru Bir Boole alanını MySQL'e nasıl ekleyebilirim?


Sanırım tinyint kullanmalıyım (); ama nasıl uygulayacağımı bilmiyorum?

Soru, MySQL DB'de bir boole alanım olması ve PHP ile değerini değiştirmem durumunda tavsiyeniz nedir?


25
2017-10-14 07:34


Menşei


Bir boole alanı da 1'ler ve 0'lar olarak yorumlanabilir, böylece küçük bir alanın olması daha hızlı bir veritabanıyla sonuçlanır. Ve eğer daha hızlı indekslerseniz. Aşağıdaki tüm bu cevaplar sizin için uygun değil! @Felix @Matthew @Haim iyi bir iş - Etienne Marais
@etbal Evet, gerçekten çok yararlı! - Trufa


Cevaplar:


Evet, TINYINT(1) gitmenin yolu ... ayrıca kullanabilirsin BOOL veya BOOLEAN eş anlamlı olan (bu yüzden bir fark yaratmaz).

0 değerlendirir false PHP ve 1 için true (aslında, başka bir sayı 0 değerlendirir true, fakat 1 normalde kullanılır).


44
2017-10-14 07:38



Teşekkürler Çok kullanışlı, zaten uyguluyor! - Trufa
@Felix Kling, 0'dan başka bir sayı değil doğru olarak değerlendirir dev.mysql.com/doc/refman/5.0/en/numeric-type-overview.html - mr_eclair
@Viswanathan: Aslında bu durumda PHP'den bahsediyordum, MySQL değil. - Felix Kling


Ben bool, BIT, TINYINT (1) hiçbirini tercih ederim. çünkü bunların hiçbiri aslında boole değil. 'Neden' için aşağıdaki bağlantıyı kontrol edebilirsiniz:

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

Daha iyi kullanırım: ENUM ('false', 'true') null değil - veri türü olarak. PHP'den 'true' veya 'false' (string olarak) iletebilirsiniz. Ve depolamak için sadece 1 byte alacak!


4
2017-10-14 07:36



Bunun yerine neden ENUM ('0', '1') değil - tormuto
Aslında dize 'false' PHP'de ironically, truey. - jonbaldie
@tormuto evet, yapabilirsiniz. Bu, okurken PHP'de otomatik tür dökümüne yardımcı olur. Ama ENUM ile PHP'den dizeleri geçmeyi unutmuş olabileceğiniz için bunu yapmak güvenli bir uygulama değildir. Birisi yanlışlıkla ENUM ('1', '0') bildirirse ne olur? Ben ('evet', 'hayır') gibi birçok kod gördüm. - Muktadir
@jonbaldie evet. - Muktadir


Genel çözümün doğru olduğunu düşünüyorsun tinyint(1). BOOL'u kısaca kullanabilirsiniz:

CREATE TABLE example (
         flag BOOL
       );

2
2017-10-14 07:37





tinyint (1) veya bit seçeneğiniz var

bu alana 0 veya 1 ekle

farkı bu gönderiye bakın:

Tinyint vs Bit


2
2017-08-26 09:59



Açıklama için teşekkürler! - Trufa


Ben aslında bir mysql tablo alanında bir boolean (0,1) kısıtlaması zorlamak istiyorsanız, en iyi atış enum unum

CREATE TABLE table_name(
    boolean_field_name ENUM('0', '1')
);

0