Numarası MySQL ile metin temsil

4 Cevap php

Katılımcılar bilgilerini girmek için bir html formu kullanan ben, bir anket inşa ediyorum.

Örneğin:

What gender are you?    Male | Female 

Erkek / Kadın seçeneği bir radyo düğmesi kullanılarak seçilebilir.

Ancak, erkek için 0 ve kadın için 1 olan bir INT değeri olarak benim veritabanında cevabını saklamak istiyorum. Bunu nasıl gösteren bir sorgu yazabilirim?

Şöyle kaba bir fikrim yok, ama iş görünmüyor:

$__g = Array('male' => '0', 'female' => '1');

Ve aynı zamanda, nasıl veritabanına değerini ekleyebilirim? Ben bu var, ama emin değilim eğer çalışırsa (ben temsil eden kısmı doğru alınamıyor çünkü)

$sql = "INSERT INTO `onlinesurvey` 
(gender) VALUES ('".$__g[$_POST['gender']]."');

Yardımlarınız için çok teşekkürler =)

4 Cevap

Bunu nasıl gösteren bir sorgu yazabilirim?

Neden int dizeyi dönüştürmek? Ben burada ne yapmak istiyorum olası değerler aralığını temsil etmek için bir enum sütun türünü kullanmak olduğunu düşünüyorum ...

Ve aynı zamanda, nasıl veritabanına değerini ekleyebilirim?

Eğer bir enum kullanırsanız, sadece sütun değeri olarak dize değişmez değerini eklersiniz.


EDITED:

Here is some information on how the enum type works: http://dev.mysql.com/doc/refman/5.0/en/enum.html

Yani sorgu aşağıdaki gibi olacaktır:

$sql = "INSERT INTO `onlinesurvey` (gender) VALUES ($_POST['gender']);

EDITED:

Ben HTML görülür, ancak seçim listesi şöyle emin değil:

<select name="gender">
<option value="male">Male</option>
<option value="female">Female</option>
</select>

Bu kritik parça seçenek değeri numaralandırma değerleri eşit olacak şekilde bağlıyor oluyor.

MySQL ENUM veri türü şeyler bu tür için en iyi seçimdir.

CREATE TABLE survey (
    gender ENUM('Male', 'Female', 'Hemaphrodite')
);

INSERT INTO survey VALUES ('Female'); // will get index 1
INSERT INTO survey VALUES ('Hemaphrodite'); // will get index 2
INSERT INTO survey VALUES ('Male'); // will get index 0

Sadece value özelliğini kullanabilirsiniz.

<select id="gender" name="gender">
  <option value="0">male</option>
  <option value="1">female</option>
</select>

Bunun için MySQL int daha iyi veri tipleri vardır, rağmen. Ben bir boolean türü öneriyoruz.

Ne danben dedi.

Ayrıca, ağırlıklı olarak kayıt tutma için, DB bütün bu ortakları saklamak numaralama alanın hakkında bilgi arama için emin olmalısınız.

Bir şey daha, INT overkill kullanımı TINYINT olduğunu