Php INT(10)和INT(12)之间有什么区别(应用于我的代码时)?

Php INT(10)和INT(12)之间有什么区别(应用于我的代码时)?,php,sql,mysql,Php,Sql,Mysql,如果我使用INT(12)与INT(10)或INT(8),那么这对我在代码中使用有什么实际作用 (这是a的衍生产品)我仔细阅读了这些手册,我想我理解了它们的意思,但我不知道它如何应用到我的php/mysql编码中 有人能举一个例子说明这一点的重要性吗?简短的回答:没有区别 显示宽度在“元数据”中传回。利用它取决于应用程序。通常它只是被忽略了。我不认为您可以使用mysql函数获得它,但是您可以使用mysqli获得它。您不必更改任何内容,因为它对返回的数据没有影响。希望使用该信息的应用程序可以使用该信

如果我使用INT(12)与INT(10)或INT(8),那么这对我在代码中使用有什么实际作用

(这是a的衍生产品)我仔细阅读了这些手册,我想我理解了它们的意思,但我不知道它如何应用到我的php/mysql编码中


有人能举一个例子说明这一点的重要性吗?

简短的回答:没有区别


显示宽度在“元数据”中传回。利用它取决于应用程序。通常它只是被忽略了。我不认为您可以使用mysql函数获得它,但是您可以使用mysqli获得它。

您不必更改任何内容,因为它对返回的数据没有影响。希望使用该信息的应用程序可以使用该信息

MySQL支持另一个扩展,可以选择在类型的base关键字后面的括号中指定整数数据类型的显示宽度(例如INT(4))。此可选显示宽度可由应用程序使用,通过左键填充空格来显示宽度小于为列指定宽度的整数值。(也就是说,此宽度存在于随结果集返回的元数据中。是否使用取决于应用程序。

显示宽度不限制可存储在列中的值的范围,也不限制宽度超过为列指定宽度的值的显示位数。例如,指定为SMALLINT(3)的列通常具有-32768到32767的SMALLINT范围,超出三个字符允许范围的值将使用三个以上的字符显示


(Emphasis mine)

MySQL中整数类型的参数对数据存储或每个数据类型支持的值范围没有影响

该参数仅适用于显示宽度,正如Jonathan Fingland提到的,应用程序可能会使用显示宽度。当与
ZEROFILL
选项结合使用时,它也会出现:

CREATE TABLE foo (
  i INT(3) ZEROFILL, 
  j INT(6) ZEROFILL, 
  k INT(11) ZEROFILL
);
INSERT INTO foo (i, j, k) VALUES (123, 456, 789);
SELECT * FROM foo;

+------+--------+-------------+
| i    | j      | k           |
+------+--------+-------------+
|  123 | 000456 | 00000000789 |
+------+--------+-------------+
请参见
ZEROFILL
如何确保数据被零填充到至少等于整数类型参数的位数

如果不使用
ZEROFILL
,数据将填充空格,但由于空格通常会被修剪,因此很难看到这种差异


它对您的PHP代码有什么影响?没有一个如果您需要输出列数据、空格填充或零填充值,那么使用起来更灵活,

那么,当我在BIGINT()中添加时,我应该放些什么,nothing不是一个选项,对吗?选择一个随机数?42?你甚至不需要括号;您可以说
BIGINT
。先生,您可以免费上网!但是,除非正在使用的驱动程序将
INT
列映射为字符串类型,否则这会有什么区别吗?当结果作为数字类型传回时,非有效零将丢失。@OldGeezer,正确,驱动程序必须查找结果集的列元数据,并执行您描述的操作。这使得INT“length”参数对于99%以上的应用程序来说更加无关紧要。