PHP会话+;MySQL资源

PHP会话+;MySQL资源,php,mysql,Php,Mysql,是否可以将mysql资源分配给$\u会话变量 //mysqldb.inc.php class mySqlDb { private $link; public function __construct($_host = '', $_db = '', $_user = '', $_pwd = '') { $link = mysql_pconnect(...); } public function query($data) {

是否可以将mysql资源分配给$\u会话变量

//mysqldb.inc.php
class mySqlDb
{
    private $link;

    public function __construct($_host = '', $_db = '', $_user = '', $_pwd = '')
    {
           $link = mysql_pconnect(...);
    }

    public function query($data)
    {
           $r = mysql_query($data, $this->link);
           return $r;
    }
}


//index.php
session_start();
include_once('mysqldb.inc.php');

$sqlobj = new mySqlDb();
$sqlobj->dbconnect($db_host, $db_name, $db_user, $db_pwd);
$_SESSION['mysqldb'] = $sqlobj;


//check.php
session_start();
include_once('mysqldb.inc.php');

$sqlobj = $_SESSION['mysqldb'];
$sqlobj->query(...);
$sqlobj->query(…)
return

致命错误:main():脚本试图执行方法或访问不完整对象的属性。请确保在调用unserialize()之前加载了您试图操作的对象的类定义“mySqlDb”,或提供一个_autoload()函数,以在第4行的D:\apache\www\check.php中加载类定义`

如果我使用
$\u会话['mysqldb']=serialize($sqlobj)
$sqlobj=unserialize($\u会话['mysqldb'])
我有以下错误:

警告:mysql_query()希望参数2是资源,整数在D:\apache\www\mysqldb.inc.php行中给出

你有这个:

$sqlobj = new mySqlDb();
但你要这样做:

$_SESSION['mysqldb'] = $sql;

也就是说,您正在将
$\u会话['mysqldb']
设置为不存在的对象。请尝试使用
$sqlobj

您无法持久保存php资源

就这样,你就是不能。所以每次都需要连接到数据库

附注:

因为会话数据是序列化的,所以资源变量不能存储在会话中


我不明白为什么不。但是你为什么要这样做呢?同样,这可能无助于回答你的问题,但你应该停止使用
mysql.*
函数。他们被弃用了。改为使用(从PHP5.1开始支持)或(从PHP4.1开始支持)。如果您不确定要使用哪一个,.Ok,那么我将只连接一次并缓存数据,直到数据有效。