美文网首页
php 输出mysql数据库中的数值类型

php 输出mysql数据库中的数值类型

作者: Sanmu_c05f | 来源:发表于2018-07-24 15:31 被阅读0次

众所周知,php是弱类型语言,一般情况下我们根本不关心变量是数字类型还是字符串类型,但是在某些时刻确必须要关注。当我们的api被java等强制类型的语言使用时就会出现类型不匹配的问题。这个时候对方肯定强制要求我们api返回的数据必须跟文档上所要求的一样。当然,我们也必须这样要求自己。

前段时间在了解到了这样的问题,结合自己的项目了解了下。其实从数据取出来的时候,数值类型就变成了文本,如果我在数组组装输出的时候做类型的变更,这样也是可以的,但是这样几乎所有的api或者字段要做修改,改动就非常大了,而且感觉也不太科学,凭啥我是数值,你不经允许就给我弄成字符串啦。哈哈。

于是从网上各种找资料看文档,分析得到,php是通过某种api(扩展)基于某种驱动与mysql连接通信的。其中api有三种:mysql、mysqli、pdo,驱动有两种:libmysqlclient(MySQL client server library )和mysqlnd(MySQL native driver )。

api中mysql扩展已经不被建议使用,它在5.5被废弃,而在php7中被去除。而且mysql不支持获取数值类型的数据,取出的都是字符串。mysqli和pdo中只需要做特殊的设置,即可取出数值类型。设置如下:

$mysqli->options(MYSQLI_OPT_INT_AND_FLOAT_NATIVE,1);

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

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

驱动程序中libmysql是不支持获取到数值类型的,只有mysqlnd支持,驱动程序在5.3之前默认使用的是libmysql,从5.3开始mysqlnd已经内置于php源代码中,我们需要在编译的时候加上,5.3之后所有的三种api的驱动都默认为mysqlnd,我们不需要做特殊处理。

所以当我们遇到数据库查出的数值类型是字符串的时候,我们可以一步步的来确定,首先判断api是不是使用的pdo或者mysqli,然后判断相应的属性是否已经设置,然后看我们的驱动是否使用的mysqlnd。

相关文章

  • php 输出mysql数据库中的数值类型

    众所周知,php是弱类型语言,一般情况下我们根本不关心变量是数字类型还是字符串类型,但是在某些时刻确必须要关注。当...

  • MYSQL复习

    mysql数据库学习 -- mysql里面的数据类型-- 数值-- 字符串-- 日期 -- 创建数据库?creat...

  • MySQL数据库DDL、DML详解

    一、MySQL数据库数据类型 <1> MySQL数据库中支持多种数据类型 数值型 字符型 日期型 <2> 常用的数...

  • MySQL 数据类型

    MySQL中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL支持多种类型,大致可以分为三类:数值、日期...

  • MySQL数据库之数据类型

    MySQL中定义数据字段的类型对数据库的优化非常重要 MySQL支持多种类型,大致可分为数值、日期/时间和字符串(...

  • php入门--数组

    在 PHP 中,array() 函数用于创建数组: 数值数组 在 PHP 中,有三种类型的数组:数值数组 - 带有...

  • MySql___(4) MySQL 数据类型

    MySQL 数据类型 数值类型 MySQL支持所有标准SQL数值数据类型。这些类型包括严格数值数据类型(INTEG...

  • 学习日记6(数据库2- 数据类型)

    查看数据库 创建数据库dbtest 删除数据库dbtest mysql 数据类型 1.数值intfloatdoub...

  • 表的数据类型即sql总结-基础篇

    表的数据类型即sql总结 在MySql数据库管理系统中,提供数值类型(整数型,浮点数,定点数类型,二进制类型),日...

  • 数据库字段类型

    一.数值类型 Mysql支持所有标准SQL中的数值类型,其中包括严格数据类型(INTEGER,SMALLINT,D...

网友评论

      本文标题:php 输出mysql数据库中的数值类型

      本文链接:https://www.haomeiwen.com/subject/qdoemftx.html