所以我寫這篇文章的網站,需要我做User類,我需要獲取從DB一些數據,但是當我嘗試$this->conn = new PDO(....)
它拋出我的致命錯誤如下如何在PHP類中使用連接到數據庫?
Fatal error: Uncaught exception 'PDOException' with message 'You cannot serialize or unserialize PDO instances' in [no active file]:0 Stack trace: #0 [internal function]: PDO->__sleep() #1 {main} thrown in [no active file] on line 0
類用戶:
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;
}
我不需要存儲類內線,但需要能夠使用DB在我的課,我也試着聲明
$conn = new PDO(....);
以外的課程,全球範圍內,它也沒有工作
您應該將您的模型(用戶類)與您的代碼邏輯(插入/更新/刪除)分開。 –
你應該有一個單獨的數據庫類,所以你不重新定義連接。你將1.連接到你的數據庫類,2創建你的用戶類傳遞數據庫連接到它。 $ db = new myDB(); $ user = new User($ db); – jeff