2010-11-25 4 views
2

Apparemment, PDO utilise la catégorie php LC_NUMERIC pour formater la sortie des flottants en fonction des paramètres régionaux actuels dans les résultats.PDO renvoie les flottants avec une virgule comme séparateur décimal

Ceci est un énorme P.I.T.A. puisque j'ai réellement besoin du LC_NUMERIC pour formater mes nombres mais les résultats venant de la base de données devraient à tout moment utiliser le point comme séparateur décimal, sinon mes calculs seront désactivés. Tout le monde a une idée s'il est possible de configurer PDO de sorte qu'il n'utilise pas les paramètres régionaux php pour formater les flottants dans les résultats de la requête.

Une autre option est beaucoup de jonglage de locaux que je préférerais ne pas faire, sauf si c'est une mesure absolue.

+1

Ce n'est pas pour moi. Êtes-vous sûr qu'il utilise les paramètres régionaux du système plutôt que certains paramètres DB ou spécifiques à la connexion? Est-ce Oracle par hasard? –

+0

Salut Alvaro, oui je suis absolument sûr, en définissant manuellement les paramètres régionaux LC_NUMERIC à nl_NL floats sortir comme 100,00 et en le laissant (C locale) ou le changer en en_US floats sortir 100.00 ce qui est ce dont j'ai besoin. – ChrisR

Répondre

0

Il semble être un bug dans PHP 5.1.4, nous avons vérifié les notes de version et buglogs sur php.net avec un technicien de notre fournisseur d'hébergement et couldn Ne trouvons rien de lié à ce comportement, alors nous avons mis à jour vers un vps en utilisant php 5.2.1 et le problème a disparu.

Ce n'est pas confirmé, mais il semble y avoir un bug lié à la version spécifique de php ou mysqllib que nous utilisions.

2

Essayez PDO::setAttribute

PDO :: ATTR_STRINGIFY_FETCHES: Convertir les valeurs numériques en chaînes lors de la récupération. Requiert bool.

sera faux dans ce cas

Questions connexes