pdo连接对象必须开启预处理模拟。
pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,true); // 启用预处理语句的模拟, 该配置选项pdo默认就是启用的。启用->
该选项之后,查询数据库的int 型字段都会变成 String ,对于开发app端接口而言肯定不行。 解决办法就是在框架的 orm 中的返回值处,将 int型字符串使用 php的 intval 函数将其强制转换成 int。
在没有使用 mycat 的项目中建议将 PDO::ATTR_EMULATE_PREPARES属性值 设置为false。 在配合
pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false); 可以原样输出mysql的字段类型。
总结: 在pdo操作 mcyat 项目中, 建议设置:
步骤一:
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES,true);
$pdo->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
步骤二:
在 数据库查询 返回前 用 php 函数将 int型字符串强制转换成 int
网友评论