>  기사  >  백엔드 개발  >  MYSQL: int 유형을 bigint로 업그레이드하면 PHP 개발 언어에 영향을 줍니다.

MYSQL: int 유형을 bigint로 업그레이드하면 PHP 개발 언어에 영향을 줍니다.

不言
不言원래의
2018-04-20 11:40:152705검색

이 기사의 내용은 MYSQL: int 유형을 bigint로 업그레이드하는 것과 이것이 PHP 개발 언어에 미치는 영향에 관한 것입니다. 이제 필요한 친구들이 참고할 수 있도록 공유하겠습니다. 비즈니스 성장을 위해 원래 Unsigned int는 더 이상 충분하지 않으며 unsigned bigint


MYSQL 정수 지원 범위:

https://dev.mysql.com/doc/refman/5.7/en/로 업그레이드해야 합니다. 정수 유형.html


1🎜-128🎜🎜127🎜🎜🎜🎜 🎜🎜 🎜🎜 0🎜🎜255🎜🎜2🎜-32768🎜🎜32767🎜🎜🎜🎜 🎜🎜 🎜 🎜0🎜🎜65535🎜🎜🎜🎜MEDIUMINT🎜🎜3🎜🎜-8388608🎜🎜8388607🎜🎜16777215🎜🎜🎜INT🎜🎜4🎜🎜 -2147483648🎜🎜2147483647🎜🎜🎜🎜 🎜🎜 🎜🎜0🎜🎜4294967295🎜🎜8-9223372036854775808
Type Storage 최소값 최대값
  (바이트) (서명됨/서명되지 않음) (서명됨/서명되지 않음)
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,- PHP_INT_MAX

比如在x64-php下,int的最大范围是:9223372036854775807,对应MYSQL的BIGINT类型

!window下PHP7之前的版本总是32位的,且以下行为会跟下面列出来的点不同

!不支持无符号的整数

超过这个范围的int数,将会转化为float型。我们知道,表单提交或者从数据库取出的数据,是字符串类型,当我们用PHP进行运算的时候,以下几点需要注意的:

예를 들어 x64-php에서 int의 최대 범위는 9223372036854775807이며 이는 MYSQL

의 BIGINT 유형에 해당합니다! 버전 before PHP7 under window 항상 32비트이며, 다음 동작은 아래 나열된 사항과 다릅니다

! 부호 없는 정수는 지원되지 않습니다.
이 범위를 초과하는 int 숫자는 float 유형으로 변환됩니다. 양식을 통해 제출되거나 데이터베이스에서 검색된 데이터는 문자열 유형이라는 것을 알고 있습니다. PHP를 사용하여 작업을 수행할 때 다음 사항에 유의해야 합니다.
http://php를 참조하세요. .net/manual/zh/언어.types.integer.php

1) 이 함수의 출력은 int 유형 범위만 지원합니다. 이 범위를 초과하는 경우 문자열 표현을 사용해야 합니다

$number = "9223372036854775900";
var_dump(intval($number));
//output,默认返回PHP_INT_MAX最大值
int(9223372036854775807)
.



2) Int 유형은 배열 키 값으로 오버플로되므로 솔루션에서는 키를 문자열

$arr = [];
$arr[9223372036854775900] = '1';
var_dump($arr);
//output
array(1) {
  [-9223372036854775808]=>
  string(1) "1"
}

3) json_decode 영향
데이터가 int를 초과하는 경우 범위는 float 유형으로 구문 분석됩니다

$str = '[9223372036854775807,9223372036854775907]';
var_dump(json_decode($str));
//output
array(2) {
  [0]=>
  int(9223372036854775807)
  [1]=>
  float(9.2233720368548E+18)
}


또한 PHP는 unsigned bigint를 지원할 수 없습니다

🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜 🎜🎜🎜

위 내용은 MYSQL: int 유형을 bigint로 업그레이드하면 PHP 개발 언어에 영향을 줍니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.