此文章发布于68
个月前,部分信息可能已经过时
,请自行斟酌确认。
微软的pdo_SqlSrv
驱动只支持将decimal
类型转为php
的string
字符串,不支持转float
,官方在github上有回答,因为如果转换可能造成精度不准确(没仔细研究)。
官方给出的方案是自己下载 SqlSrv 源码修改编译。
编译教程:
ThinkPHP 修改方法
修改:thinkphp/library/think/db/connector/Sqlsrv.php
,将以下参数设置成false
(默认为true
)
PDO::ATTR_STRINGIFY_FETCHES => false,
另外在database.php
数据库配置文件中增加以下两个参数可以解决小数小于1时前面的0丢失的情况。
PDO::SQLSRV_ATTR_FORMAT_DECIMALS => true,
PDO::SQLSRV_ATTR_FETCHES_NUMERIC_TYPE => true,