2010-11-25 6 views
2

Anscheinend PDO verwendet die php LC_NUMERIC-Kategorie, um die Ausgabe von Fließkommas nach dem aktuellen Gebietsschema in den Resultsets zu formatieren.PDO gibt Floats mit Komma als Dezimaltrennzeichen zurück

Dies ist eine große P.I.T.A. da ich tatsächlich die LC_NUMERIC brauche, um meine Zahlen zu formatieren, aber die Ergebnisse, die von der Datenbank kommen, sollten immer den Punkt als Dezimaltrennzeichen verwenden, sonst sind meine Berechnungen ausgeschaltet.

Jeder hat eine Idee, wenn es möglich ist, PDO zu konfigurieren, so dass es nicht das PHP-Gebietsschema verwenden wird, um Floats in Abfrageergebnissen zu formatieren.

Eine andere Option ist eine Menge Locale Jonglage, die ich lieber nicht machen würde, es sei denn, es ist eine absolute letzte Maßnahme.

+1

Es ist nicht für mich. Sind Sie sicher, dass das Systemgebietsschema und nicht einige DB- oder verbindungsspezifische Parameter verwendet werden? Ist es zufällig Oracle? –

+0

Hallo Alvaro, ja, ich bin mir absolut sicher, wenn man das Local LC_NUMERIC manuell auf nl_NL setzt, kommt floats als 100,00 heraus und wenn man es verlässt (C locale) oder in en_US ändert, kommen die Floats als 100.00 raus, was ich brauche. – ChrisR

Antwort

0

Es scheint ein Fehler in PHP 5.1.4 zu sein, haben wir Release Notes und buglogs auf php.net geprüft zusammen mit einem Techniker von unserem Hosting-Provider und couldn Finde nichts, was mit diesem Verhalten zusammenhängt, dann haben wir mit php 5.2.1 zu einem vps aufgerüstet und das Problem ist verschwunden.

Es ist nicht bestätigt, aber es scheint ein Fehler im Zusammenhang mit der spezifischen PHP-Version oder mysqllib, die wir verwendeten.

2

Versuchen PDO::setAttribute

PDO :: ATTR_STRINGIFY_FETCHES: numerische Werte in Strings konvertieren, wenn das Abrufen. Benötigt Bool.

wird in diesem Fall falsch sein

Verwandte Themen