PHP/MYSQL - Dezimalzahl wird falsch gespeichert?
Hallo.
Ich möchte eine Dezimalzahl (z.B. 12,34) in eine Datenbank (MySQL) speichern. Gespeichert wird aber 12.00.
Ich weiß das es was mit dem Zahlenformat zu tun hat. Komma als Dezimaltrenner.
Wie kriege ich das jetzt am besten hin? Ich könnte jedes mal, per replace, das Komma durch einen Punkt ersetzen. Aber das fühlt sich falsch an als Lösung.
Es ist doch sicher möglich das "sauber" zu lösen, oder?
2 Antworten
Hallo,
vorab gesagt kenne ich mich nicht so gut mit MySQL aus.
Wenn du nicht gerade Berechnungen in der Datenbank selbst ausführen willst, könntest du die Dezimalzahl auch einfach als String speichern.
Ansonsten fällt mir noch die Funktion number_format ein, mit der du eine Zahl im entsprechenden Format ausgeben kannst:
<?php echo number_format(12.34, 2, ',', '.') ?>
Diese Funktion sorgt dafür, dass die Zahl mit zwei Nachkommastellen, einem Komma als Trennzeichen sowie einem Punkt als Tausender-Trennzeichen angezeigt wird.
LG
Danke für dein Hilfeversuch Korbi. Leider funktioniert das nicht, weil das Zahlenformat ja schon nicht stimmt (also für den Interpretor).
number_format("12,65", 2, ",", ".");
Bringt den Fehler "A non well formed numeric value encountered" und das Ergebnis: 12,00
Also das gleiche was ich jetzt auch habe. Es liegt nicht an der Zahlenformatierung sondern am Zahlenformat das der Interpretor versteht. Der will englisches Format. Ich habe aber Eingaben im deutschen Format.
Beim Einlesen der Nutzereingabe via PHP kannst du die numfmt_parse-Funktion nutzen, um den Wert richtig zu parsen. Das Gegenstück für die Ausgabe wäre numfmt_format.
Schau dir zu beiden Funktionen die Beispiele an.
Danke Regex. Ich werde es mal probieren.
Was mich wundert ist das es doch möglich sein muss das der Interpretor das deutsche Zahlenformat versteht, nicht das englische.