Я пытаюсь исправить проект, который кто-то еще закодировал, это беспорядок!Лучший способ сохранить короткий номер в mysql
На странице редактирования профиля пользователя у них есть что-то вроде этого ниже, в котором перечислены все доступные поля выбора радио для параметров, которые пользователь может выбрать для уровня образования, это всего лишь 1 элемент, есть много таких элементов, на ответы здесь, я могу применить его ко многим другим функциям этого кода.
Они использовали массив для многих полей профиля, он сохранил бы возможные ответы. Пользователь может выбрать только 1 ответ, хотя в этом случае. Таким образом, для образования есть 7 возможных ответов, а число, соответствующее его числу в массиве, хранится в DB mysql, они сохраняют этот 1 номер как длину varchar 255, которая не может быть хорошей.
Должен ли я хранить его как varchar с длиной 1 или использовать перечисление и список 7 вариантов или что-то еще?
Образование
<?PHP
// Array of possible education profile selections
$arr_education[1]="No Answer";
$arr_education[2]="High school";
$arr_education[3]="Some college";
$arr_education[4]="In college";
$arr_education[5]="College graduate";
$arr_education[6]="Grad/professional school";
$arr_education[7]="Post grad";
// shows the array above as checkboxes on a form
foreach($arr_education as $ind=>$val) {
echo '<input type="radio" name="education" value="' .$ind. '" ' if($education==$ind){ echo "checked";}. '>' .$val. '<br>';
}
//on a users profile page there would be something like this
$education = 7; // seven would be Post Grad from our array above
echo $arr_education[$education]
//Now here is the mysql table, they chose to use a varchar(255) which seems retarded, using the above code, the max result would be 1 charachter long
education varchar(255)
?>
Это varchar с длиной MAX 255. Это не лучший способ сохранить число, но если требуется меньшая длина, используется меньше. – pavium
@pavium: Когда MySQL создает временные таблицы в памяти (например, при сортировке набора результатов), он будет выделять полные 255 байт для каждой строки, как если бы это столбец CHAR. –