我使用的是PDO和MySQL,出于某种原因,当从数据库中获取int类型的值时,PDO语句返回的是数字的字符串表示形式,而不是数字类型的值.如何防止这种情况发生?
我注意到PDO类中有一个属性:PDO::ATTR_STRINGIFY_FETCHES
,应该会处理这个问题,但当试图修改它时,它抛出一个错误,表示该属性对MySQL驱动程序无效.
在查询数据库时获取字符串而不是数字是否正常?
我使用的是PDO和MySQL,出于某种原因,当从数据库中获取int类型的值时,PDO语句返回的是数字的字符串表示形式,而不是数字类型的值.如何防止这种情况发生?
我注意到PDO类中有一个属性:PDO::ATTR_STRINGIFY_FETCHES
,应该会处理这个问题,但当试图修改它时,它抛出一个错误,表示该属性对MySQL驱动程序无效.
在查询数据库时获取字符串而不是数字是否正常?
我认为在PHP5.2:-(中无法实现"数字"
In PHP 5.3, it becomes possible, if I remember correctly, when you are using the new (new as in PHP >= 5.3) mysqlnd (MySQL Native Driver) driver.
好吧,在我的书签中进一步挖掘之后,我发现了这篇关于mysqlnd:PDO_MYSQLND: The new features of PDO_MYSQL in PHP 5.3
的文章
上面写着:
Advantages of using mysqlnd for PDO
mysqlnd在以下情况下返回本机数据类型:
但这只是PHP5.3(前提是您的PHP5.3版本是用mysqlnd(and not old libmysql))编译的,并且似乎只适用于准备好的语句:-(
很抱歉
一个解决方案是,在PHP端有一个映射系统(like an ORM -- see 100 ; just as an example of ORM : I don't know if it does what you're asking),将来自DB的结果转换为PHP数据类型...
是的,如果你想使用像===
和!==
这样的运算符,这是不好的,它们是类型敏感的...