首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP + MySQL资源

PHP + MySQL资源
EN

Stack Overflow用户
提问于 2012-08-13 21:05:55
回答 2查看 691关注 0票数 2

是否可以将mysql资源分配给$_SESSION变量?

代码语言:javascript
复制
//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“是在调用un序列化()之前加载的,或者提供了一个__autoload()函数来加载第4行D:\apache\www\check.php中的类定义。

如果使用$_SESSION['mysqldb'] = serialize($sqlobj)$sqlobj = unserialize($_SESSION['mysqldb']),则会出现以下错误:

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-13 21:09:07

不能持久化php资源。

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

documentation指出:

由于会话数据是序列化的,因此无法将资源变量存储在会话中。

票数 4
EN

Stack Overflow用户

发布于 2012-08-13 21:08:29

你有这个:

代码语言:javascript
复制
$sqlobj = new mySqlDb();

但你这样做:

代码语言:javascript
复制
$_SESSION['mysqldb'] = $sql;

也就是说,将$_SESSION['mysqldb']设置为不存在的对象。试一试$sqlobj

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11942308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档