开发者社区> 问答> 正文

如何使用PDO从MySQL获取数值类型?

我使用PDO和MySQL,出于某种原因,当从数据库中获取int类型的值时,PDOStatement返回的是数字的字符串表示形式,而不是数字类型的值。如何防止这种情况发生?

我注意到有一个PDO类的属性:PDO::ATTR_STRINGIFY_FETCHES应该可以解决这个问题,但是在尝试修改它时,它抛出一个错误,指出该属性对MySQL驱动程序无效。

查询数据库时,获取字符串而不是数字是否正常?

展开
收起
保持可爱mmm 2020-05-10 19:39:59 416 0
1 条回答
写回答
取消 提交回答
  • 我不认为可以在PHP 5.2中完成“数字”操作:-(

    如果我没记错的话,在PHP 5.3中,当您使用新的(在PHP> = 5.3中是新的) mysql nd (MySQL本机驱动程序)驱动程序时,就有可能。

    好吧,在进一步浏览我的书签之后,我发现了有关mysqlnd的这篇文章: PDO_MYSQLND: The new features of PDO_MYSQL in PHP 5.3

    它说(引用):

    对PDO使用mysqlnd的优点

    当使用服务器端的预处理语句时,mysqlnd返回本机数据类型,例如,INT列作为整数变量而不是字符串返回。这意味着内部的数据转换较少。

    但这仅是PHP 5.3(前提是您的PHP 5.3版本是使用mysqlnd编译的(而不是旧的libmysql)),并且似乎仅适用于已准备好的语句:-(

    抱歉...

    一种解决方案是在PHP端具有一个映射系统(例如ORM-参见Doctrine;仅作为ORM的一个示例:我不知道它是否满足您的要求)来转换结果从数据库到PHP数据类型...

    是的,如果要使用类型敏感的运算符(例如)===和,这是很不好的!==。来源:stack overflow

    2020-05-10 19:40:20
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像