Запутаться о размере в полях таблицы MySQL - PullRequest
3 голосов
/ 07 февраля 2012

Я только что создал одну таблицу ролей и определил role_id tinyint (1), хотя я смог сохранить 99, 200 max до 255 в качестве ограничения tinyint для неподписанных.Так в чем же смысл передачи этого размера в типах данных?

когда мало что читается, речь идет о ширине экрана, но когда я получаю результат на моей странице php, он отображается так, как они хранятся встол.

Любой наставник, не могли бы вы помочь мне очистить его?

1 Ответ

2 голосов
/ 07 февраля 2012

из 10.1.1. Числовой обзор типа :

M indicates the maximum display width for integer types. The maximum legal
display width is 255. Display width is unrelated to the range of values a type
can contain [...].

То есть tinyint(M), или tinyint(1) в вашем случае, означает, что любое значение, сохраненное в role_id, будет обрезано до длины одного байта при отображении MySQL. Аналогично, tinyint(3) будет содержать однозначное целое число с двумя пробелами. Вы также можете использовать tinyint(3) zerofill для дополнения 0 s вместо этого, но у него есть побочный эффект: tinyint s без знака.

Однако, независимо от того, как вы указываете свои tinyint s, они будут храниться внутри как целое число в диапазоне [-128,127] (со знаком) или [0,255] (без знака), и поэтому это значение будет получать PHP при запросе вашего базы данных.

Вы можете использовать mysql_field_len и substr , чтобы ограничить ширину экрана аналогично PHP.

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