我正在使用 PDO 和 MySQL,由于某种原因,当从数据库获取 int 类型的值时,PDOStatement 返回数字的字符串表示形式,而不是数字类型的值。如何防止这种情况发生?
我注意到 PDO 类有一个属性:PDO::ATTR_STRINGIFY_FETCHES
应该处理这个问题,但是当尝试修改它时,它会抛出一个错误,指出该属性不是对 MySQL 驱动程序有效。
查询数据库时获取字符串而不是数字正常吗?
最佳答案
首先回答你的最后一个问题,“是的”,不幸的是,接收数字作为字符串是正常的。正如 Pascal 引用的手册所说,mysqlnd(PHP 5.3)将从准备好的语句返回 native 数据类型,前提是您关闭 PDO 的准备好的语句模拟。
new PDO($dsn, $user, $pass, array(
PDO::ATTR_EMULATE_PREPARES => false
))
PDO::ATTR_STRINGIFY_FETCHES 与 MySQL 无关。
如果你看到好的一面,无论如何使用准备好的语句都是很好的做法,所以......;)
关于php - 如何使用 PDO 从 MySQL 获取数字类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17994770/