ThinkPHP 通过 SqlSrv 获取 SqlServer 数据库 decimal 类型数据变成 string 字符串

此文章发布于 68 个月前,部分信息可能已经过时,请自行斟酌确认。

微软的pdo_SqlSrv驱动只支持将decimal类型转为phpstring字符串,不支持转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,

参考文档:

https://github.com/Microsoft/msphpsql/issues/291

最后修改:2019 年 04 月 09 日 01 : 48 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论