PHP Session + MySQL资源 [英] PHP Session + MySQL resource
问题描述
是否可以将mysql资源分配给$ _SESSION变量?
Is it possible to give a mysql resource to a $_SESSION variable ?
//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():脚本试图执行方法或访问不完整对象的属性.请确保在之前调用unserialize()之前调用了您要操作的对象的类定义"mySqlDb",或提供了__autoload()函数以将类定义加载到D:\ apache中\ www \ check.php,第4行`
Fatal error: main(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "mySqlDb" of the object you are trying to operate on was loaded before unserialize() gets called or provide a __autoload() function to load the class definition in D:\apache\www\check.php on line 4`
如果我使用$_SESSION['mysqldb'] = serialize($sqlobj)
和$sqlobj = unserialize($_SESSION['mysqldb'])
,则会出现此错误:
If I use $_SESSION['mysqldb'] = serialize($sqlobj)
and $sqlobj = unserialize($_SESSION['mysqldb'])
I have this error:
警告:mysql_query()期望参数2为资源,在D:\ apache \ www \ mysqldb.inc.php中给定的整数...
Warning: mysql_query() expects parameter 2 to be resource, integer given in D:\apache\www\mysqldb.inc.php on line ...
推荐答案
您无法保留php资源.
You cannot persist php resources.
就是这样-您只是不能.因此,您每次都需要连接到数据库.
That's it - you just cannot. So you need to connect to database each time.
$_SESSION
文档注释:
由于会话数据已序列化,因此资源变量无法存储在会话中.
Because session data is serialized, resource variables cannot be stored in the session.
这篇关于PHP Session + MySQL资源的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!