Maison >développement back-end >tutoriel php >Pourquoi MySQL stocke-t-il 2147483647 de manière incorrecte et comment puis-je y remédier ?
Insertion d'entier incorrect dans MySQL : le cas de 2147483647
L'insertion de données dans MySQL peut parfois conduire à des comportements inattendus, en particulier lorsqu'il s'agit de valeurs entières . Un de ces problèmes déroutants survient lors de l'insertion de l'entier 2147483647, ce qui peut entraîner le stockage d'une valeur différente de celle prévue dans la base de données.
Pour comprendre pourquoi cela se produit, il est important de saisir le concept de limitations de taille d'entier dans MySQL. . Par défaut, MySQL utilise le type de données « int », qui a une valeur maximale de 2147483647. Cela signifie que les valeurs entières supérieures à ce seuil ne peuvent pas être stockées avec précision dans les colonnes « int ».
Dans l'extrait de code fourni , la variable « $steam64 » stocke probablement un identifiant utilisateur de l'API Web Steam, qui peut être une valeur numérique élevée. Lorsque cette valeur est insérée dans une colonne définie comme « int », MySQL tente de la forcer dans la plage entière maximale, ce qui entraîne la valeur incorrecte susmentionnée.
La solution à ce problème réside dans la modification du type de données de la colonne à 'bigint'. Les grands entiers peuvent contenir des valeurs beaucoup plus grandes que « int », permettant le stockage précis de valeurs telles que 2147483647 sans aucune troncature ni distorsion.
Pour modifier le type de données dans MySQL, exécutez simplement la requête suivante :
ALTER TABLE users_info MODIFY COLUMN steam64 BIGINT;
Cette modification permettra à MySQL de gérer correctement les grandes valeurs entières comme $steam64, garantissant que les données insérées dans la base de données reflètent avec précision les valeurs stockées dans le scénario.
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!