Home > Article > Backend Development > MYSQL: Upgrading int type to bigint, impact on PHP development language
The content introduced in this article is about MYSQL: upgrading the int type to bigint, and its impact on the PHP development language. It has a certain reference value. Now I share it with you. Friends in need can refer to it
because As the business grows, the original unsigned int is no longer enough and needs to be upgraded to unsigned bigint
MYSQL integer supported range:
https://dev. mysql.com/doc/refman/5.7/en/integer-types.html
Type | Storage | Minimum Value | Maximum Value |
---|---|---|---|
(Bytes) | (Signed/Unsigned) | (Signed/Unsigned) | |
TINYINT |
1 | -128 |
127 |
0 |
255 |
||
SMALLINT |
2 | -32768 |
32767 |
0 |
65535 |
||
MEDIUMINT |
3 | -8388608 |
8388607 |
0 |
16777215 |
||
INT |
4 | -2147483648 |
2147483647 |
0 |
4294967295 |
||
BIGINT |
8 | -9223372036854775808 |
9223372036854775807 |
0 |
18446744073709551615 |
You can see that the order of magnitude supported by bigint is very large. Although the mysql field type has been adjusted, does our development language support it?
PHP5.6 64 version:
PHP’s int type range is PHP_INT_MIN (available for PHP7) -
PHP_INT_MAX
,
For example, under x64-php, the maximum range of int is: 9223372036854775807, corresponding to the BIGINT type of MYSQL
! Versions before PHP7 under window are always 32-bit, and the following behavior will be different from the points listed below
! Unsigned integers are not supported
Int numbers exceeding this range will be converted to float type. We know that the data submitted by the form or retrieved from the database is of string type. When we use PHP to perform operations, the following points need to be noted:
Please refer to: http://php .net/manual/zh/language.types.integer.php
1) intval function, the output of this function only supports the int type range. If it exceeds this range, it needs to be represented by a string
$number = "9223372036854775900"; var_dump(intval($number)); //output,默认返回PHP_INT_MAX最大值 int(9223372036854775807)
2) int type as array key value , will overflow, so the solution needs to convert the key into a string
$arr = []; $arr[9223372036854775900] = '1'; var_dump($arr); //output array(1) { [-9223372036854775808]=> string(1) "1" }
##3) Impact of json_decode
If the data exceeds the range of int, the parsed data is float type$str = '[9223372036854775807,9223372036854775907]'; var_dump(json_decode($str)); //output array(2) { [0]=> int(9223372036854775807) [1]=> float(9.2233720368548E+18) }
##
The above is the detailed content of MYSQL: Upgrading int type to bigint, impact on PHP development language. For more information, please follow other related articles on the PHP Chinese website!