我使用PDO和MySQL,出于某种原因,当从数据库中获取int类型的值时,PDOStatement返回的是数字的字符串表示形式,而不是数字类型的值。如何防止这种情况发生?
我注意到有一个PDO类的属性:PDO::ATTR_STRINGIFY_FETCHES应该可以解决这个问题,但是在尝试修改它时,它抛出一个错误,指出该属性对MySQL驱动程序无效。
查询数据库时,获取字符串而不是数字是否正常?
我不认为可以在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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。