事情是这样的,最近在网上找了一个开源商城,支持php版本7.1-7.3,然后框架是thinkphp6的。搭建起来学习一下人家的代码和业务逻辑。

真正跑起来后,发现bug有点多,且经过排查大都是因为数据类型错误的原因(全部用的严格模式),所以在想这个团队维护开源代码没维护好啊,严格模式没用明白就搞出来。

之后就开始手工改bug的过程(由于PHP之前从数据库拿数据只能都是string的,所以这里欠考虑了),但发现需要修改的地方有点多,而且可能出现意想不到的新增问题。所以我想在php从数据库中拿数据时,能不能根据数据库字段的类型对数据类型进行自动转换。

找了一下PDO的一些参数,加上看了下其他大手子的博客,答案是可以~

只要使用setAttribute设置两个属性就可以了,

    PDO::ATTR_STRINGIFY_FETCHES => false,
    和
    PDO::ATTR_EMULATE_PREPARES  => false,

此时理应问题解决!


但我没有

我设置后根据就没有生效,问题还是那些问题

难道我的pdo是个假的?

果然,经过一顿查资料,原因可能是因为我的pdo-mysql用的驱动不是php官方的mysqlnd


我查了下我用的驱动是mysql而不是mysqlnd。

所以赶紧下载mysqlnd驱动,也就是mysqlnd.so的一个扩展。

    yum install php72w-mysqlnd

提示和mysql有冲突,得先卸载mysql

那先卸载mysql再安装mysqlnd

    yum remove 72w-mysql
    yum install php72w-mysqlnd

重启

打开商城

问题解决~