Griff von Dezimalzahlen in mysqli
Ich die Preise für einige Einträge in einer mysql-Tabelle. Beim erstellen der Tabelle bin ich mit DECIMAL(10,2)
wie ich brauchen nicht mehr als 2 Ziffern nach dem Komma (z.B.: 123,45 akzeptiert werden würde als ein Eingang aber 123,456 wäre gerundet auf 123,45 mit PHP).
Erste Frage: mit DECIMAL(10,2)
, wie kann ich wissen, wie viele Nummern können gespeichert werden, vor dem Komma? Ich weiß, es ist nicht 10, wie 10 ist nur die Präzision Mysql verwendet, wenn dabei die Mathematik mit diesen zahlen: so, wo die Länge der Zahl selbst angegeben ist?
Zweite Frage: ich bin mit PHP zu Runde Benutzereingaben zu passen, der Datentyp (float mit 2 Ziffern nach dem Komma). Wie soll ich mysqli->bind_param
zu legen, die diese Daten? Welche dieser Datentypen (aus der Dokumentation) angenommen durch bind_param
sollte ich verwenden (und möglicherweise: warum?)
Character Description
i corresponding variable has type integer
d corresponding variable has type double
s corresponding variable has type string
b corresponding variable is a blob and will be sent in packets
Du musst angemeldet sein, um einen Kommentar abzugeben.
DECIMAL(10,2)
bedeutet, dass10
ist die maximale Anzahl von Ziffern verwendet werden. Die2
legt fest, dass es zwei auf der rechten Seite der Dezimalstelle. So bedeutet dies, es gibt8
Ziffern Links auf der linken Seite. Sehen das HandbuchAls für den Datentyp, den Sie verwenden sollten
double
da dies für dezimal-zahlen.Integer
hat keine dezimal-Zeichen, so wird es den Boden alle zahlen.String
ist für text und nicht numerische Werte.Blob
ist für ein großes binäres Objekt, Z.B.: ein Bilddouble
oderfloat
wenn Sie brauchen genaue skaliert Numerik. Siehe dev.mysql.com/doc/refman/5.6/en/problems-with-float.htmldecimal
. nur der bind-param-Typ auf das doppelte. Und itsthe einzige option der Arten gegeben.string
ich kann auch setzen Sie den Wert auf "ich bin keine Nummer, und ich werde brechen Sie Ihre Abfrage" und der code würde es akzeptieren. Dann MySql wirft den Fehler (unter normalen Umständen, könnte es ausgeblendet werden) und Sie hätte keine Idee, warum dein Programm nicht.