首页 > 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自己安排,不需要你来做。如果在同一请求中,请使用单例模式来设计。


不要存在session中,将对象序列话以后得数据,存储到数据库中,或者,存到本地的文件中,当下次需要的时候拿出来。


为什么要暂存pdo对象呢 方向不对吧
pdo的的各种配置应该在pdo类实例化时就做好吧,不然一个没有配置好的pdo对象有什么用。
参考楼上单例模式

【热门文章】
【热门文章】