Maison > base de données > tutoriel mysql > Pourquoi mon insertion d'entier MySQL affiche-t-elle 2147483647 au lieu de la valeur correcte ?

Pourquoi mon insertion d'entier MySQL affiche-t-elle 2147483647 au lieu de la valeur correcte ?

Susan Sarandon
Libérer: 2024-12-13 06:25:10
original
868 Les gens l'ont consulté

Why is My MySQL Integer Insertion Showing 2147483647 Instead of the Correct Value?

Entier incorrect converti en 2147483647 lors de l'insertion MySQL ?

Dans le monde de la gestion de bases de données, il n'est pas rare de rencontrer des situations où les données que vous l'insertion dans un tableau ne correspond pas à la valeur souhaitée. Un problème récent a soulevé des inquiétudes concernant l'insertion incorrecte d'une valeur entière (2147483647) dans une base de données MySQL.

Regardons la situation de plus près. L'utilisateur disposait d'une variable appelée $steam64 contenant une valeur entière valide représentant un identifiant Steam. Lorsqu'ils ont utilisé l'extrait de code suivant pour insérer cette valeur dans une base de données MySQL, ils ont été perplexes de découvrir qu'un entier complètement différent (2147483647) était inséré :

$sql_query = "INSERT INTO users_info (steam64) VALUES ('$steam64')";
Copier après la connexion

Ce comportement étrange a conduit à la confusion et à la frustration. . Les efforts de débogage ont révélé que var_dump($steam64) et echoing de la variable renvoyaient la valeur entière correcte, laissant l'utilisateur se demander ce qui n'allait pas.

La réponse à ce mystère réside dans le type de données de la colonne steam64 dans la table MySQL. Le type de données par défaut pour les entiers dans MySQL est INT, qui a une valeur maximale de 2147483647. Dans ce cas, la valeur stockée dans $steam64 a dépassé cette valeur maximale, ce qui a entraîné la troncature des bits d'ordre supérieur et l'insertion du plus grand nombre. entier représentable (2147483647).

La solution à ce problème est simple : changez simplement le type de données de la colonne steam64. de INT à BIGINT. Ce type de données peut accueillir des valeurs entières beaucoup plus grandes, garantissant que la valeur stockée dans $steam64 est correctement insérée dans la base de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal