この記事の内容は MYSQL: int 型を bigint にアップグレードすることと、それが PHP 開発言語に与える影響についてです。必要な友人に参考にしていただけるようにしました。ビジネスの成長のためには、元の Unsigned int では十分ではなくなり、unsigned bigint にアップグレードする必要があります
MYSQL 整数のサポート範囲:
https://dev.mysql.com/doc/refman/5.7/en/ integer-types.html
タイプ | ストレージ | 最小値 | 最大値 |
---|---|---|---|
(バイト) | (符号付き/符号なし) | (符号あり/符号なし) | |
TINYINT TINYINT
|
1 | -128 |
127 |
0 |
255 | 1||
SMALLINT SMALLINT
|
2 | -32768 |
32767 |
0 |
65535 |
||
MEDIUMINT |
3 | -8388608 |
8388607 | 2
0 0
|
16777215 |
||
INT |
4 | -2147483648 |
2147483647 |
0 |
4294967295 |
||
BIGINT BIGINT
|
8 | -9223372036854775808 |
9223372036854775807 |
0 |
18446744073709551615 | 8
9223372036854775807
🎜🎜🎜🎜 🎜🎜 🎜 🎜0
🎜🎜18446744073709551615
🎜🎜🎜🎜
bigint によってサポートされる桁数が非常に大きいことがわかります。 mysqlのフィールドタイプが調整されましたが、開発言語はそれをサポートしていますか?
PHP5.6 64 バージョン:
PHP の int 型範囲は PHP_INT_MIN (PHP7 で利用可能) -
PHP_INT_MAX
,
比如在x64-php下,int的最大范围是:9223372036854775807,对应MYSQL的BIGINT类型
!window下PHP7之前的版本总是32位的,且以下行为会跟下面列出来的点不同
!不支持无符号的整数
超过这个范围的int数,将会转化为float型。我们知道,表单提交或者从数据库取出的数据,是字符串类型,当我们用PHP进行运算的时候,以下几点需要注意的:
,
たとえば、x64-php では、int の最大範囲は 9223372036854775807 で、MYSQL の BIGINT 型に対応します! Windows の PHP7 より前のバージョンは常に 32 ビットです。以下の動作が続きます。 違いは以下にリストされています
!符号なし整数はサポートされていません
この範囲を超える Int 数値は float 型に変換されます。フォームによって送信されたデータ、またはデータベースから取得されたデータは文字列型であることがわかっています。PHP を使用して操作を実行する場合は、次の点に注意する必要があります:
を参照してください: http://php.net/ Manual/zh / language.types.integer.php
1) intval 関数、この関数の出力は int 型の範囲のみをサポートします。この範囲を超える場合は、文字列表現を使用する必要があります
。
2) 配列キー値としての Int 型はオーバーフローするため、ソリューションではキーを文字列に変換する必要があります
$number = "9223372036854775900"; var_dump(intval($number)); //output,默认返回PHP_INT_MAX最大值 int(9223372036854775807)
3) json_decode の影響
データがintの範囲を超えたら解析して出てくるのはfloat型$arr = [];
$arr[9223372036854775900] = '1';
var_dump($arr);
//output
array(1) {
[-9223372036854775808]=>
string(1) "1"
}
以上がMYSQL: int 型から bigint へのアップグレード、PHP 開発言語への影響の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。