PHP通过PDO查MySQL查询int字段返回string类型,解决方案

虽说PHP是弱类型的语言,但不代表没类型,乱转也是个问题,因为要进行数据比较,判断,还要和其它语言数据交互。这个问题一定要解决的。但网上的标准答案似乎没提驱动问题,此文结合作者经验详细说明。

1、PDO连接设置

如果百度搜索"php pdo查int返回string",标准答案是:

$pdo->setAttribute(\PDO::ATTR_EMULATE_PREPARES, false);
$pdo->setAttribute(\PDO::ATTR_STRINGIFY_FETCHES, false);

2、驱动问题不可忽略

PDO参数设置没毛病,但不一定管用 。个别同学反馈这样设置是无效的,刚好我本地环境也碰到了,运气就这么好。

参数无效时的php -i 相关驱动参数

image.png

参数有效时的php -i相关驱动参数,这里要划重点!

不管怎么安装的php,pdo的驱动相关参数长这模样就可以了。

PDO

PDO support => enabled
PDO drivers => sqlite, mysql

pdo_mysql

PDO Driver for MySQL => enabled
Client API version => mysqlnd 5.0.12-dev - 20150407 - \
$Id: 38fea24f2847fa7519001be390c98ae0acafe387 $

PDO参数有效相关编译参数 -- 这是关键一步

我是习惯通过编译来安装PHP环境的,这样更可控。
正面是我编译安装的部分参数,供参考,

./configure  --prefix=/usr/local/php \
 --with-config-file-path=/usr/local/php/etc --enable-mysqlnd \
--with-pdo-mysql --with-mysqli=/usr/local/mysql/bin/mysql_config

另外分享一下我之前怎么设置都无效时的编译参数

这样编译安装pdo参数怎么设置都无效,int会转string:

./configure  --prefix=/usr/local/php \
 --with-config-file-path=/usr/local/php/etc \
 --with-mysqli=mysqlnd \
 --with-pdo-mysql=/usr/local/mysql/bin/mysql_config 

你可能感兴趣的:(PHP通过PDO查MySQL查询int字段返回string类型,解决方案)