我正在创建一个像这样的 doctrince 实例
$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)
但是,在数据库中,该值存储为像这样的 float 17.90
我需要什么才能获得正确格式的数据?我无法将列类型从 float 更改为数据库中的其他内容,因为它不属于我。是否有可能以某种方式获得正确的值?
最佳答案
我解决了这个问题。问题是,我是德国用户。呵呵,这不完全是问题,但它与它有关。
我正在使用的网站将 LC_NUMERIC
设置为 de_DE.UTF-8
。将其更改为 en_US.UTF-8
时,它可以正常工作。
setlocale(LC_NUMERIC , 'en_US.UTF-8');
似乎本地化只是“错误”。
但是!有没有办法将美国格式转换为德语格式?因为我真的不认为因为我收到的数据而简单地更改 LC_NUMERIC
是正确的方法,对吗?这听起来像是一个快速而肮脏的解决方案
关于php - Doctrine 从数据库中选择不带小数位的浮点值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33286897/