MySQL 삽입 중에 잘못된 정수가 2147483647로 변환되었습니까?
데이터베이스 관리의 세계에서는 데이터가 테이블에 삽입한 값이 의도한 값과 일치하지 않습니다. 최근 한 가지 문제로 인해 MySQL 데이터베이스에 정수 값(2147483647)이 잘못 삽입되는 것에 대한 우려가 제기되었습니다.
상황을 자세히 살펴보겠습니다. 사용자에게는 Steam ID를 나타내는 유효한 정수 값이 포함된 $steam64라는 변수가 있었습니다. 다음 코드 조각을 사용하여 이 값을 MySQL 데이터베이스에 삽입했을 때 완전히 다른 정수(2147483647)가 삽입되고 있다는 사실을 알고 당황했습니다.
$sql_query = "INSERT INTO users_info (steam64) VALUES ('$steam64')";
이 이상한 동작으로 인해 혼란과 좌절이 발생했습니다. . 디버깅 노력을 통해 var_dump($steam64)와 변수 에코가 모두 올바른 정수 값을 반환한 것으로 밝혀졌으며 사용자는 무엇이 잘못되었는지 궁금해했습니다.
이 수수께끼에 대한 답은 Steam64 열의 데이터 유형에 있습니다. MySQL 테이블. MySQL에서 정수의 기본 데이터 유형은 INT이며 최대값은 2147483647입니다. 이 경우 $steam64에 저장된 값이 이 최대값을 초과하여 상위 비트가 잘리고 가장 큰 비트가 삽입되었습니다. 표현 가능한 정수(2147483647).
이 문제에 대한 해결책은 간단합니다. 간단히 steam64 열의 데이터 유형을 다음에서 변경하면 됩니다. INT에서 BIGINT로. 이 데이터 유형은 훨씬 더 큰 정수 값을 수용할 수 있으므로 $steam64에 저장된 값이 데이터베이스에 올바르게 삽입되도록 보장합니다.
위 내용은 내 MySQL 정수 삽입에 올바른 값 대신 2147483647이 표시되는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!