您的位置:首页 > 编程语言 > PHP开发

[php] pdo 查询 mysql 返回值 int 转 string 类型的问题

2017-02-10 15:54 2251 查看

前言

因为本地接口开发时,php 使用 mysqli 扩展,发现测试环境没有使用 mysqli,所以更换成了 pdo,随后对接口进行测试的时候发现,返回值的整型字段数据全都变为字符型。


查错

因为更改前没有发生这个问题,所以大致判断是 pdo 做了某些处理导致的这个问题。
其中,发现
PDO::ATTR_STRINGIFY_FETCHES(提取的时候将数值转换为字符串)
PDO::ATTR_EMULATE_PREPARES(启用或禁用预处理语句的模拟)

这两个预定义之间会有一些影响,我们来做个实验验证下


实验

$pdo = new PDO($dsn, $user, $pass, $options);

/* 实验1,结果 int 不转为 string */

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

/* 实验2,结果 int 转为 string */

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

/* 实验3,结果 int 转为 string */

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

/* 实验4,结果 int 转为 string */

$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php pdo