关于pdo为何查询sqlserver自动转换类型为string的问题

按照网上的方法设置ATTR_EMULATE_PREPARESATTR_STRINGIFY_FETCHES这两个参数

$pdo = new PDO('sqlsrv:server=127.0.0.1,1433;database=jzdb2019', 'sa', '123456');
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

但是设置最后,结果集返回的依然元素全是string类型的数组

//var_dump打印
array2{
	“id”=>
	string(3) "123",
	"phone"=>
	string(11) "13812345678"
}

然后试了几个网上的方法也不行,无奈利用json_encodejson_decode,这里JSON_NUMERIC_CHECK检测是否为数字,json_decode第二个参数设为true表示转为数组

$result = json_decode(json_encode($result,JSON_NUMERIC_CHECK ),true);

但随之问题来,数据库中原本的手机号码、qq等原本是用varchar存储,现在也会一并转为int

//var_dump打印
array2{
	“id”=>
	int(123) ,
	"phone"=>
	string(13812345678) 
}

这个方法不是最优解,将继续查找原因

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值