我使用的是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数据类型...

是的,如果你想使用像===!==这样的运算符,这是不好的,它们是类型敏感的...

Mysql相关问答推荐

根据键的数量,SQL Json字段分为行

错误:数据包顺序错误.GET:0预期:10 node JS MySQL

MySQL-带有用户定义变量的IF-THEN语句

为什么MySQL派生条件下推优化不起作用

在MySQL查询中查找和替换表内的值

按特定顺序匹配 EventS 和下一个 EventA 之前的第一个 Event 之间的记录

MySQL - 事务绑定多个存储过程调用和回滚的简单方法?

如何获取每日登录用户数?

在 MySQL 中使用三个表进行计算

终止空闲的mysql连接

MySQL Group By 和 Sum 其他列的总值

Python MYSQL 更新语句

用于国际和多语言目的的数据库建模

utf8mb4_unicode_ci 与 utf8mb4_bin

外键可以引用非唯一索引吗?

MySQL错误 1005 (HY000): 无法创建表 'foo.#sql-12c_4' (errno: 150)

如何在 MySQL 中删除此索引?

如何使用 XML_LOAD() 将 XML 文件导入 MySQL 数据库表;功能

带有 OuterRef 的简单子查询

在 PHP 中运行 MySQL *.sql 文件