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