十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
mysql返回修改后的列_PDO Mysql驱动返回结果的列类型问题
站在用户的角度思考问题,与客户深入沟通,找到秀英网站设计与秀英网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站制作、网站设计、企业官网、英文网站、手机端网站、网站推广、域名注册、虚拟空间、企业邮箱。业务覆盖秀英地区。
PDO的Mysql驱动返回的结果中,所有的字段都是字符串,
使用statement-getColumnMeta得到的列元信息,其中的pdo_type也表明是字符串。
php可以自动处理类型转换,比如整型和字符串,但是对于其他环境,比如传给其他平台(如flash),就要在其中一端进行类型转换,或者在协议中处理。另外,要基于查询结果的元信息构建自动化的数据处理,比如ORM,也就不方便了。
原因是,mysql驱动使用mysql_fetch_row函数取得结果集,它是个字符串数组,即所有列都是字符串方式的存储,并且没根据DB存储的类型进行转换,相应地,列的元数据也就都是字符串类型了;
另外,pdo本身的数据类型也有限,跟DB、DB客户端库函数的数据类型有差异,比如pdo没有浮点数类型。
根据pdo接口规范,只要修改mysql驱动中的两个回调函数就可以了:
用处其实很多的,为了兼容处理
比如,你的url传递一个变量过来,表示分页中的第几页
但是因为是用get方式的,非法用户可能篡改这个,你就需要将他强制转化成int型,保证程序的安全性
这种例子很多,不多说了,你看多了自然明白
=是赋值操作,php是弱语言,对变量类型控制不是很严格,$x=1的时候是给$x赋值了一个整数变量,但是后面的语句只是单纯的给$x变量赋值了 你可以把$x当成是一个盒子,至于盒子里想放三角形还是圆形就看你自己了
$time_str = 1313994356;
echo date('Y-m-d H:i:s',$time_str);
注意时差问题,可使用date_default_timezone_set("PRC");搞定8小时时差问题