使用medoo查询出的数据均自动转换为字符串

最近在使用medoo进行子查询时发现总是无法查询出数据,经过断点调试后发现是因为第一条sql中查询出来的数据均为字符串类型,而关联字段是整型,导致无法查询出结果


解决问题

最初以为问题原因是medoo框架在输出查询结果时做了处理,断点调试后发现查询出的结果就是字符串,因此怀疑是PDO查询中的参数设置有误。

经过查询PDO手册,发现两个参数:

1
2
PDO::ATTR_STRINGIFY_FETCHES 提取的时候将数值转换为字符串。 
PDO::ATTR_EMULATE_PREPARES 启用或禁用预处理语句的模拟。

在实例化medoo的时候在option参数设置中加入这两个选项,即可查询出原有数据类型:

1
2
3
4
5
'option' => [
PDO::ATTR_CASE => PDO::CASE_NATURAL,
PDO::ATTR_STRINGIFY_FETCHES => false,
PDO::ATTR_EMULATE_PREPARES => false
],