【发布时间】:2012-01-18 01:32:06
【问题描述】:
我正在尝试将定制的 PHP MySql 类存储到 $_SESSION 中。访问时,PHP 会抛出错误:“脚本试图执行方法或访问不完整对象的属性......”。
include_once 'core/mysql.php';
$conn = new mysql();
$_SESSION['DBCONNECTION'] = new mysql();
$result = $_SESSION['DBCONNECTION']->query_cust($sql); // Fails!
$result = $conn->query_cust($sql); // Works!
我只是想了解 PHP 中的 Sessions 是如何工作的,以及将类定义为普通变量和 $_SESSION 中的变量之间的区别是什么?!?
var_dump($_SESSION['DBCONNECTION']) 返回:
object(__PHP_Incomplete_Class)[1]
public '__PHP_Incomplete_Class_Name' => string 'mysql' (length=5)
public 'con' => int 0
【问题讨论】:
-
您可以使用 var_dump($_SESSION['DBCONNECTION']) 查看会话包含的内容。
-
除了技术上的困难,你甚至不应该这样做。它不属于会话。为什么每个用户(=session)都有自己的数据库连接句柄?
-
我不明白为什么要将数据库连接存储在会话中。
-
那么,您将如何处理数据库连接?将连接存储为全局?
-
根本不要存储它。只需重新连接每个请求并将连接传递给需要它的每个对象,例如通过构造函数。
标签: php mysql class session web