Представление текста с номером MySQL - PullRequest
1 голос
/ 12 января 2010

Я строю опрос, в котором участники используют 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 ]

2 голосов
/ 12 января 2010

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
0 голосов
/ 12 января 2010

Как мне написать запрос, который представляет это?

Зачем преобразовывать строку в int? Я думаю, что вы хотите сделать здесь, это использовать тип столбца enum для представления диапазона возможных значений ...

А также, как мне вставить значение в базу данных?

Если вы используете перечисление, вы просто вставите строковое литеральное значение в качестве значения столбца.


РЕДАКТИРОВАНИЕ:

Вот некоторая информация о том, как работает тип enum: 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>

Важнейшим элементом этого является получение атрибутов значения параметра равными значениям перечисления.

0 голосов
/ 12 января 2010

Что сказал Данбен.

Вы также должны сохранить все эти ассоциированные данные в БД, главным образом для ведения учета, поиска информации о поле enum.

Еще одна вещь, INT это избыточное использование TINYINT

0 голосов
/ 12 января 2010

Вы можете просто использовать атрибут value.

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

Хотя для этого в MySQL лучше типы данных, чем в int. Я бы порекомендовал логический тип.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...