Maison >base de données >tutoriel mysql >Pourquoi mon insertion d'entier MySQL affiche-t-elle 2147483647 au lieu de la valeur correcte ?
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')";
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!