2016-03-21 5 views
-5

Ich habe ein text Eingabefeld, das eine type=number hat. Wenn ich es aus dem Formular mit diesem Element an die saveform.php post es empfängt die Zahlen in Form von string.So, wenn ich die Update-Abfrage verwenden in saveform.php den db mit diesem Wert zu aktualisieren, wird mysql mit den intval dieser string.In aktualisiert mysql ich habe eine Spalte mit dem Namen mobile_no, die von der Art ist, int und der Länge 15.update int value zu mysql php

saveform.php

$query="UPDATE `registered_users` SET `user_name`=?,`mobile_no`=?,`addressline1`=?,`addressline2`=?,`city`=?,`zipcode`=? WHERE `user_email`=?"; 
$statement = $mysqli->prepare($query); 
$statement->bind_param("sisssis", $username, $mobileno, $addressline1, $addressline2, $city, $zipcode, $email); 

Dies ist der Code der Abfrage, die ich made.I haben haben eine var_dump der $mobile_no und der Ausgang dieser Müllhalde gemacht wird unten gegeben.

string '9560987629' (length=10) 

Diese in der db mit diesem int 2147483647 aktualisiert wird .Wie ich die richtigen Werte soll ich aktualisieren, ohne von int String meine mysql Spalte zu ändern.

+2

Machen Sie es zu einem Bigint. https://dev.mysql.com/doc/refman/5.5/en/integer-types.html – chris85

+2

handy nnummern können Zeichen wie '+' vor dem Ländercode enthalten. Es könnte besser sein, eine Form von Textspalte anstelle einer Nummer zu machen. – RiggsFolly

+0

Vielleicht möchten Sie in Erwägung ziehen, Telefonnummern als Strings statt als Ints zu speichern. Eine schnelle Suche nach SO zeigt mehrere Gründe für die Verwendung eines String-Datentyps in diesem Fall. – mopo922

Antwort

1

Der Wert 2147483647 ist eigentlich der höchste Wert, den eine Ganzzahl mit Vorzeichen haben kann. Sie müssen den Datentyp zu bigint ändern, dann wird es für genügend große Zahlen sorgen.

Ich würde empfehlen, dass Sie Telefonnummern als Zeichenfolgen obwohl speichern. Je nach Anwendungsfall könnte es irgendwann notwendig sein. Einige Länder arbeiten tatsächlich mit Telefonnummern, die mit 0 beginnen. An diesem Punkt ist es am besten, die Nummern als String zu speichern.

Why is 2,147,483,647 the max int value?

1

Die Antwort auf Ihre Frage ist, dass der Maximalwert für eine ganze Zahl Spalte 2147483647 oder 4294967295 wenn nicht signiert ist. https://dev.mysql.com/doc/refman/5.5/en/integer-types.html

Sie sollten einen bigint-Datentyp verwenden, um Ganzzahlen zu speichern, die größer als diese Werte sind.

Sie sollten die Telefonnummern wahrscheinlich nicht als ganze Zahlen speichern. Telefonnummern und Postleitzahlen sind zwar Nummern, aber keine Nummern. Ich empfehle, sie als Strings zu speichern.

Zum Beispiel meine Postleitzahl 02128, wenn in einer Integer-Spalte gespeichert wäre 2128.