php查询Sqlserver出错相关bug记录

最近遇到了两个通过PHP查询Sqlserver遇到的问题,因为在网上没有找到太多的资料,这里简要记录一下

1、bit类型当值为null时,通过PHP读出值为0
问题描述:
bit类型当值为null时,在测试环境读出值为NULL,开发&线上环境为0
问题排查:
比较了PHP版本和PHP扩展,没有发现问题
结论:
最终发现是TSQL版本默认不一致: 读出NULL值的是版本是8.0,有问题的版本是4.2,此问题只是在8.0版本后被修复
修改指定的TSQL版本即可

默认版本在如下文件中修改(/etc/freetds.conf):


2、datatime类型通过strtotime转码失败
问题描述:
通过PHP读出datatime类型字段,然后通过strtotime转码失败在测试环境转换失败,在开发环境成功

问题排查:
1、比较了PHP版本和PHP扩展,均没有发现差异
2、首先确认了一下PHP配置中的 mssql.datetimeconvert = On
3、配置文件有如下描述:
; Specify how datetime and datetim4 columns are returned
; On => Returns data converted to SQL server settings
; Off => Returns values as YYYY-MM-DD hh:mm:ss
但是一直没有找到这个SQL server settings

问题确认:
在mssql.datetimeconvert = On 时,datatime的时间格式是根据如下文件中(/etc/locales.conf)的参数决定的

猜你喜欢

转载自www.cnblogs.com/axwing/p/9073307.html