mysql到mysqli转变表_mysqli 和 pdo 查询出来的类型转换

关闭模拟预处理时,能保持数据类型,但某些类型,输出的数据跟数据库里的值不一致:

比如float(9,2)类型的字段,字段内容为32.10,PDO关闭模拟预处理时读到的值为32.099998474121,类型为float.

也就是说开启PDO模拟预处理(默认),返回的数据类型都是string,值跟数据库存储的内容一致.

MySQL服务器没有使用预处理时,返回的是string类型的数据.

MySQLi不使用prepare查询返回的字段类型全部是string,值跟数据库存储的内容一致.

使用prepare时跟pdo_mysql关闭模拟预处理一样,返回对应类型的数据(decimal类型依旧是字符串),而且float类型的值也存在不一致.

所以,数据库中带有小数点的数据,建议使用字符串类型或decimal类型保存.

类型转换:

settype($foo, "array");

settype($foo, "bool");

settype($foo, "boolean");

settype($foo, "float");

settype($foo, "int");

settype($foo, "integer");

settype($foo, "null");

settype($foo, "object");

settype($foo, "string");

$foo = (array)$foo;

$foo = (b)$foo; // from PHP 5.2.1

$foo = (binary)$foo; // from PHP 5.2.1

$foo = (bool)$foo;

$foo = (boolean)$foo;

$foo = (double)$foo;

$foo = (float)$foo;

$foo = (int)$foo;

$foo = (integer)$foo;

$foo = (object)$foo;

$foo = (real)$foo;

$foo = (string)$foo;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值