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 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容