在使用php获取mysql数据时发现,mysql中存储的字段类型是int, php输出后全部自动转为了string
php7.0版本已移除mysql扩展,连接mysql需使用pdo或mysqli
PDO中解决方案
$pdo = new PDO('mysql:host=localhost;dbname=aaa', 'root', '');
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); //告诉mysql不要进行转换
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false); //告诉php不要进行转换
foreach ($pdo->query('select * from bbb') as $row) {
var_dump($row);
MYSQLI中解决方案:
$mysqli->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, FALSE); //告诉php不要进行转换
Yii2中设置db组件:

如果没有生效请检查PHP扩展中是否有mysqlnd,没有的话自行安装


centos下安装mysqlnd
1、如果之前安装过php-mysql扩展,则需要先卸载php-mysql,因为在安装php-mysqlnd的时候,否则会有冲突:
yum remove php-mysql //删除原先的php-mysql扩展
yum install php-mysqlnd //安装php-mysqlnd
安装完成重启后查看php -m 是否已有扩展
本文介绍在PHP环境下,如何避免从MySQL数据库读取的int类型数据被自动转换为string类型。通过PDO和MYSQLI两种方式,设置属性以保持数据原始类型,适用于php7.0及以上版本。
971

被折叠的 条评论
为什么被折叠?



