pdo对象序列化 - PDO实例化对象怎样存储
本文介绍了pdo对象序列化 - PDO实例化对象怎样存储的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
最近学习PDO的相关东西,我的原意是:做N个功能块,分别为初始化、连接数据库、新建数据库、新建数据表、插入数据等,这就要求初始化PDO的时候,能将PDO对象暂存起来,这样后面的功能好调用,但是出了一些错误。
初始化代码如下:
$p=new PDO('mysql:host=localhost;port=3306;dbname=fff',"root","root");
$_SESSION["m"]=serialize($p);
实际运行中,这段代码报错如下:
Fatal error: Uncaught PDOException: You cannot serialize or unserialize PDO
instances in [no active file]:0 Stack trace: #0 [internal function]:
PDO->__sleep() #1 {main} thrown in [no active file] on line 0
这个错误描述用一句话概括:PDO对象无法序列化或反序列化。
那么,究竟如何才能实现将pdo对象暂存呢,通过session或其他方式?
解决方案
你有点异想天开了,PHP中资源对象是不能进行序列化的。在不同请求中,所有的资源都是重新安排的,如果有重用也是PHP自己安排,不需要你来做。如果在同一请求中,请使用单例模式来设计。
这篇关于pdo对象序列化 - PDO实例化对象怎样存储的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文