【发布时间】:2012-08-13 21:05:55
【问题描述】:
是否可以将 mysql 资源分配给 $_SESSION 变量?
//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(...)返回
致命错误:main():脚本试图执行方法或访问不完整对象的属性。请确保您尝试操作的对象的类定义“mySqlDb”已加载在 unserialize() 被调用或提供 __autoload() 函数以在 D:\apache 中加载类定义\www\check.php 第 4 行`
如果我使用$_SESSION['mysqldb'] = serialize($sqlobj) 和$sqlobj = unserialize($_SESSION['mysqldb']) 我有这个错误:
警告:mysql_query() 期望参数 2 是资源,在 D:\apache\www\mysqldb.inc.php 中给出的整数 ...
【问题讨论】:
-
我不明白为什么不这样做。但是为什么会你呢?
-
另外,它可能无助于回答您的问题,但您应该停止使用
mysql_*函数。它们正在被弃用。请改用PDO(PHP 5.1 起支持)或mysqli(PHP 4.1 起支持)。如果您不确定要使用哪一个,read this article.