ホームページ  >  記事  >  バックエンド開発  >  MYSQL: int 型から bigint へのアップグレード、PHP 開発言語への影響

MYSQL: int 型から bigint へのアップグレード、PHP 開発言語への影響

不言
不言オリジナル
2018-04-20 11:40:152642ブラウズ

この記事の内容は MYSQL: int 型を bigint にアップグレードすることと、それが PHP 開発言語に与える影響についてです。必要な友人に参考にしていただけるようにしました。ビジネスの成長のためには、元の Unsigned int では十分ではなくなり、unsigned bigint にアップグレードする必要があります


MYSQL 整数のサポート範囲:

https://dev.mysql.com/doc/refman/5.7/en/ integer-types.html


1🎜-128🎜🎜127🎜🎜🎜🎜 🎜🎜 🎜🎜 0🎜🎜255🎜🎜2🎜-32768🎜🎜32767🎜🎜🎜🎜 🎜🎜 🎜 🎜0🎜🎜65535🎜🎜🎜🎜MEDIUMINT🎜🎜3🎜🎜-8388608🎜🎜8388607🎜🎜16777215🎜🎜🎜INT🎜🎜4🎜🎜 -2147483648🎜🎜2147483647🎜🎜🎜🎜 🎜🎜 🎜🎜0🎜🎜4294967295🎜🎜8-9223372036854775808
タイプ ストレージ 最小値 最大値
(バイト) (符号付き/符号なし) (符号あり/符号なし)
TINYINTTINYINT 1 -128 127
    0 255
SMALLINTSMALLINT 2 -32768 32767
    0 65535
MEDIUMINT 3 -8388608 8388607
00 16777215
INT 4 -2147483648 2147483647
    0 4294967295
BIGINTBIGINT 8 -9223372036854775808 9223372036854775807
    0 18446744073709551615
🎜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"
}

🎜 なお、PHPはunsigned bigintをサポートできません🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜🎜

以上がMYSQL: int 型から bigint へのアップグレード、PHP 開発言語への影響の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。