【发布时间】:2016-07-10 10:08:59
【问题描述】:
所以我正在编写这个网站,要求我创建用户类,我需要从数据库中获取一些数据,但是当我尝试$this->conn = new PDO(....) 时,它会抛出如下致命错误
致命错误:未捕获的异常“PDOException”与消息“您无法在 [无活动文件] 中序列化或反序列化 PDO 实例”:0 堆栈跟踪:#0 [内部函数]:PDO->__sleep() #1 {main } 在第 0 行抛出 [no active file]
班级用户:
private $idu = -1;
private $display_name = "";
private $permissions = [];
private $conn = "";
/**
* User constructor.
*/
function __construct($idu)
{
$this->conn = new PDO("mysql:host=localhost;dbname=lai","lai","lai");
$this->conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->idu = $idu;
$this->setDisplayName($idu);
}
//GETS DISPLAY NAME FROM DB FOR CURRENT USER
private function setDisplayName($idu){
//$sql = "SELECT `display_name` FROM `users` WHERE `idu`='".$idu."'";
//$q = $this->conn->prepare($sql);
//$q->execute();
//$result = $q->fetch(PDO::FETCH_ASSOC);
//return $result['display_name'];
}
//GETS PERMISSIONS FROM DB FOR CURRENT USER
private function setPermissions($idu){
}
//RETURNS ID OF CURRENT USER
public function getIDU(){
return $this->idu;
}
//RETURNS DISPLAY NAME FOR CURRENT NAME
public function getDisplayName(){
return $this->display_name;
}
//RETURNS PERMISSIONS FOR CURRENT USER
public function getPermissions(){
return $this->permissions;
}
我不需要在类中存储连接,但需要能够在我的类中使用数据库,我也尝试过声明
$conn = new PDO(....);
在课堂之外,在全球范围内,它也不起作用
【问题讨论】:
-
您应该将模型(用户类)与代码逻辑(插入/更新/删除)分开。
-
您应该有一个单独的数据库类,这样您就不会重新定义连接。您将 1. 连接到您的数据库类,2 创建您的用户类,将数据库连接传递给它。 $db = 新的 myDB(); $user = 新用户($db);