我正在构建调查,参与者使用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']]."');
非常感谢你的帮助=)
答案 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