2010-11-25 3 views
2

PDO는 PHP LC_NUMERIC 범주를 사용하여 결과 집합의 현재 로케일에 따라 부동 소수점 결과를 형식화합니다.PDO는 소수점 구분 기호로 쉼표로 부동 소수점을 반환합니다.

이것은 거대한 P.I.T.A.입니다. 이후 실제로 숫자를 서식을 LC_NUMERIC 필요하지만 데이터베이스에서 오는 결과를 소수점 구분 기호로 항상 점을 사용해야합니다, 그렇지 않으면 내 계산이 해제됩니다.

누구나 PDO를 구성하여 PHP 로켈을 사용하여 쿼리 결과에서 수레 서식을 지정하지 않아도됩니다.

또 다른 옵션은 절대적인 마지막 조치가 아니라면 오히려하지 않을 많은 로케일 저글링입니다.

+1

나를위한 것이 아닙니다. 일부 DB 또는 연결 관련 매개 변수 대신 시스템 로캘을 사용하고 있습니까? 우연히 오라클인가? –

+0

안녕하세요 Alvaro, 네, 수동으로 LC_NUMERIC 로케일을 nl_NL로 설정하면 100,00으로 나옵니다. C 로케일을 떠날 때 또는 en_US로 변경하면 100.00으로 나옵니다. – ChrisR

답변

0

이 동작과 관련된 것을 찾지 못하면 PHP 5.2.1을 사용하여 vps로 업그레이드하고 문제가 사라졌습니다.

확인되지는 않았지만 특정 PHP 버전이나 mysqllib와 관련된 버그로 보입니다.

2

PDO::setAttribute

PDO :: ATTR_STRINGIFY_FETCHES을 시도해보십시오 가져올 때 숫자를 문자열로 변환합니다. bool이 필요합니다.

이 경우 잘못된 것

우리가 우리의 호스팅 제공 업체와 나오지 않았어에서 기술자와 함께 php.net에 릴리스 노트와 buglogs을 확인했습니다 PHP 5.1.4에서 버그가 수 있도록 나타납니다
관련 문제