PDO::ATTR_EMULATE_PREPARES为True时如何避免结果集中Int类型被转换为String
1. 运行环境
1). 当前使用的版本?
PHP 版本:7.3.24
pdo_mysql
PDO Driver for MySQL => enabled
Client API version => mysqlnd 5.0.12-dev - 20150407 - $Id: 7cc7cc96e675f6d72e5cf0f267f48e167c2abb23 $
2. 问题描述?
项目需要在PHP中使用PDO操作数据库时需要把PDO::ATTR_EMULATE_PREPARES属性设置为True,即使用本地模拟prepare,设置后结果集中的Int类型会被转换为String,
array(2) { [“tid”]=> string(2) “66” [“tval”]=> string(5) “hello” }
tid在数据库中定义为BigInt
$sth = $db->prepare('SELECT * FROM dtt_gen WHERE tval = ?');
$sth->execute(['hello']);
$res2 = $sth->fetch(PDO::FETCH_ASSOC);
var_dump($res2);
请问如何在PDO::ATTR_EMULATE_PREPARES => true的情况下让结果集中的Int类型不被转换为String呢?
3. 您期望得到的结果?
同时满足PDO::ATTR_EMULATE_PREPARES => true和结果集数据类型不被隐式转换
推荐文章: