用数字MySQL代表文本

时间:2010-01-12 01:06:04

标签: php mysql

我正在构建调查,参与者使用html表单输入详细信息。

例如:

What gender are you?    Male | Female 

可以使用单选按钮选择男/女选项。

但是,我想将答案存储在我的数据库中作为INT值,男性为0,女性为1。如何编写代表该查询的查询?

我有一个粗略的想法,看起来像这样,但似乎不起作用:

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

另外,如何将值插入数据库?我有这个,但我不确定它是否有效(因为我无法使代表部分正确)

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

非常感谢你的帮助=)

4 个答案:

答案 0 :(得分:2)

MySQL ENUM数据类型是此类内容的最佳选择。

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

答案 1 :(得分:0)

您可以使用value属性。

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

虽然,MySQL有比这更好的数据类型。我推荐一个布尔类型。

答案 2 :(得分:0)

  

如何编写代表该问题的查询?

为什么要将字符串转换为int?我想你想要做的是使用枚举列类型来表示可能值的范围...

  

另外,如何将值插入数据库?

如果使用枚举,则只需将字符串文字值作为列值插入。


<强>编辑:

以下是有关枚举类型如何工作的一些信息: http://dev.mysql.com/doc/refman/5.0/en/enum.html

所以你的查询看起来像这样:

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

<强>编辑:

我还没有看过您的HTML,但请确保选择列表如下所示:

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

关键是让选项值属性等于枚举值。

答案 3 :(得分:0)

danben说的话。

您还应该确保将所有这些关联存储在数据库中,主要用于记录保存,查找有关枚举字段的信息。

还有一件事,INT过度使用TINYINT