Datenbank-Update falsch ausgeführt
Thomas
- datenbank
0 _King Lully0 Thomas0 _King Lully0 Thomas
0
dedlfix
Hallo,
Ich habe das folgende Problem:
Ich führte in einem PHP-Skript die folgende Berechnung aus:
$Menge = 5;
$Preis = 10;
$Kosten = (float)($Menge * $Preis);
$update = "UPDATE tblUser SET konto=konto-$Kosten WHERE id=$UserID";
Mein Datenbank-Attribut "konto" ist ein float-Wert (Datenbank: mySQL).
Wenn ich mir den SQL-String $update ausgeben lasse, wird das folgende angezeigt:
UPDATE tblUser SET konto=konto-50 WHERE id=1
Aber bei Kontoständen >= 10.000.000 Euro vermindert sich der Kontostand nicht um 50 Euro, sondern entweder gar nicht oder um 100 Euro.
Hat jemand eine Idee, woran das liegen könnte?
Vielen Dank vorab für die Hilfe,
Thomas
Für Währungsbeträge nimmt man am besten numerische Datentypen mit zwei oder vier festen Nachkommastellen.
Für Währungsbeträge nimmt man am besten numerische Datentypen mit zwei oder vier festen Nachkommastellen.
Was nehme ich dann?
DECIMAL(15,2)
Bedeutet das, dass ich eine fünfzehnstellige Zahl habe und 2 Nachkommastellen?
Wenn ich das jetzt in meinem Datenbankmodell ändere: bekomme ich dann Probleme, oder bekommt die mySQL-datenbank die Konvertierung von float zu decimal (15,2) problemlos auf die Reihe?
Viele Grüße,
Thomas
Für Währungsbeträge nimmt man am besten numerische Datentypen mit zwei oder vier festen Nachkommastellen.
Was nehme ich dann?
DECIMAL(15,2)
Bspw.
Bedeutet das, dass ich eine fünfzehnstellige Zahl habe und 2 Nachkommastellen?
RTFM, ansonsten ja.
Wenn ich das jetzt in meinem Datenbankmodell ändere: bekomme ich dann Probleme, oder bekommt die mySQL-datenbank die Konvertierung von float zu decimal (15,2) problemlos auf die Reihe?
Es wird Rundungsfehler geben, aber Du hättest den Fehler _vorher_ gemacht.
Bedeutet das, dass ich eine fünfzehnstellige Zahl habe und 2 Nachkommastellen?
RTFM, ansonsten ja.
Danke, ich habe das Manual gelesen, wollte nur nochmal sicher gehen ;-)
Es wird Rundungsfehler geben, aber Du hättest den Fehler _vorher_ gemacht.
Wenn die Rundungsprobleme auch wirklich nur Rundungsprobleme sind und 10.000.000,00 nicht auf einmal zu 9.999,00 wird, ist das kein Problem.
Vielen Dank für die Hilfe,
Thomas
echo $begrüßung;
DECIMAL(15,2)
Bedeutet das, dass ich eine fünfzehnstellige Zahl habe und 2 Nachkommastellen?
Wenn das "und" bei dir "und zusätzlich" bedeutet, dann nein. Wenn es "und davon" bedeutet, dann ja.
echo "$verabschiedung $name";
DECIMAL(15,2)
Bedeutet das, dass ich eine fünfzehnstellige Zahl habe und 2 Nachkommastellen?Wenn das "und" bei dir "und zusätzlich" bedeutet, dann nein. Wenn es "und davon" bedeutet, dann ja.
"Wir haben Hasso und fünf Hunde." würde tatsächlich nahelegen, dass wir sechs Hunde haben, "Sollen wir das nicht machen?" sollte auch nicht mit einem "Ja." beantwortet werden, wenn es nicht gemacht werden soll, u.s.w. u.s.f. - blöde Sprache das moderne Hochdeutsch.