PDO的Mysql驱动返回的结果中,所有的字段都是字符串,
使用statement->getColumnMeta得到的列元信息,其中的pdo_type也表明是字符串。
php可以自动处理类型转换,比如整型和字符串,但是对于其他环境,比如传给其他平台(如flash),就要在其中一端进行类型转换,或者在协议中处理。另外,要基于查询结果的元信息构建自动化的数据处理,比如ORM,也就不方便了。
原因是,mysql驱动使用mysql_fetch_row函数取得结果集,它是个字符串数组,即所有列都是字符串方式的存储,并且没根据DB存储的类型进行转换,相应地,列的元数据也就都是字符串类型了;
另外,pdo本身的数据类型也有限,跟DB、DB客户端库函数的数据类型有差异,比如pdo没有浮点数类型。
根据pdo接口规范,只要修改mysql驱动中的两个回调函数就可以了:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)