我正在创建一个像这样的理论实例
$dbalConfig = new \Doctrine\DBAL\Configuration();
$dbal = \Doctrine\DBAL\DriverManager::getConnection($dbalConn, $dbalConfig);dbalConfig只是mysql连接设置+将字符集设置为utf-8
当我现在执行查询时:
$sql = "SELECT price FROM products";
$stmt = $dbal->prepare($sql);
$stmt->execute();
$products = $stmt->fetchAll();并将结果转储
var_dump($products);我得到的所有值都是这样的
[1]=>
array(1) {
["price"]=>
float(17)但是,在数据库中,该值存储为浮点型,如下所示的17.90
我需要什么才能获得正确格式的数据?我不能将数据库中的列类型从float更改为其他类型,因为它不属于我。有没有可能以某种方式获得正确的值?
发布于 2015-10-23 16:30:24
我修复了这个问题。问题是,我是一个德国用户。哈哈,这不完全是问题所在,但却与此有关。
我使用的站点将LC_NUMERIC设置为de_DE.UTF-8。将其更改为en_US.UTF-8时,它可以正常工作,没有任何问题。
setlocale(LC_NUMERIC , 'en_US.UTF-8');看起来本地化是“错误的”。
但!有没有办法把美国格式转换成德国格式?因为我真的不认为因为我收到的数据而简单地更改LC_NUMERIC的方法是正确的,对吧?这听起来像是一个又快又脏的解决方案。
https://stackoverflow.com/questions/33286897
复制相似问题