pdo对象序列化 - PDO实例化对象怎样存储

查看:107
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆