Heim >Datenbank >MySQL-Tutorial >Warum zeigt meine MySQL-Ganzzahleinfügung 2147483647 anstelle des korrekten Werts an?

Warum zeigt meine MySQL-Ganzzahleinfügung 2147483647 anstelle des korrekten Werts an?

Susan Sarandon
Susan SarandonOriginal
2024-12-13 06:25:10865Durchsuche

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

Während der MySQL-Einfügung wurde eine falsche Ganzzahl in 2147483647 konvertiert?

In der Welt der Datenbankverwaltung kommt es nicht selten vor, dass Sie auf Situationen stoßen, in denen die Daten verloren gehen Das Einfügen in eine Tabelle entspricht nicht dem von Ihnen beabsichtigten Wert. Ein aktuelles Problem gab Anlass zu Bedenken hinsichtlich der falschen Einfügung eines ganzzahligen Werts (2147483647) in eine MySQL-Datenbank.

Sehen wir uns die Situation genauer an. Der Benutzer hatte eine Variable namens $steam64, die einen gültigen Ganzzahlwert enthielt, der eine Steam-ID darstellte. Als sie den folgenden Codeausschnitt verwendeten, um diesen Wert in eine MySQL-Datenbank einzufügen, stellten sie verblüfft fest, dass eine völlig andere Ganzzahl (2147483647) eingefügt wurde:

$sql_query = "INSERT INTO users_info (steam64) VALUES ('$steam64')";

Dieses seltsame Verhalten führte zu Verwirrung und Frustration . Debugging-Bemühungen ergaben, dass sowohl var_dump($steam64) als auch das Echo der Variablen den korrekten ganzzahligen Wert zurückgaben, sodass sich der Benutzer fragte, was schief gelaufen war.

Die Antwort auf dieses Rätsel liegt im Datentyp der Steam64-Spalte in die MySQL-Tabelle. Der Standarddatentyp für Ganzzahlen in MySQL ist INT mit einem Maximalwert von 2147483647. In diesem Fall überschritt der in $steam64 gespeicherte Wert diesen Maximalwert, was dazu führte, dass die höherwertigen Bits abgeschnitten und die größten eingefügt wurden darstellbare Ganzzahl (2147483647).

Die Lösung für dieses Problem ist einfach: Ändern Sie einfach den Datentyp der Steam64-Spalte von INT in BIGINT. Dieser Datentyp kann viel größere Ganzzahlwerte aufnehmen und stellt so sicher, dass der in $steam64 gespeicherte Wert korrekt in die Datenbank eingefügt wird.

Das obige ist der detaillierte Inhalt vonWarum zeigt meine MySQL-Ganzzahleinfügung 2147483647 anstelle des korrekten Werts an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn