Пытаюсь ввести номер мобильного. Но номер не берет. Что я могу сделать??
mysql>create table mob(MobNo int(30));
mysql>insert into mob1 values(9876543211);
Выдает ошибку:
ERROR 1264 (22003): Out of range value for column 'MobNo' at row 1
Спасибо..
@AlonEital Если кто-то введет символ, отличный от числа, это выдаст ошибку.
Что вы думаете, если мы думаем, что в целях безопасности мы можем взять строку или целое число. Поскольку я новичок, у меня больше нет идей?
Вам необходимо проверить ввод и удалить все нечисловые символы или отобразить пользователю ошибку о недопустимом вводе. Вы не должны использовать тип поля в базе данных в качестве решения
@AlonEitan, я не понял, как удалить
В MySQL unsinged int может содержать значения до 4294967295; твой примерно в два раза больше, так что я не могу влезть.
Используйте bigint:
create table mob(MobNo bigint);
У вас может сложиться впечатление, что 30 в int(30) дает вам 30-значную точность. На самом деле это не так; число в круглых скобках — это ширина экрана: if относится к представлению числа и не изменяет диапазон значений, которые он может хранить. Это как-то сложно, и этот синтаксис теперь планируется к устареванию:
Начиная с MySQL 8.0.17, атрибут ширины отображения устарел для целочисленных типов данных; вы должны ожидать, что его поддержка будет удалена в будущей версии MySQL.
Bigint не допустит 30 цифр; используйте decimal(30,0). Вероятно, они тоже хотят неподписанных
Сохраните его как varchar, почему int ??