1

我想從超全局mysqli類的所有方法和屬性繼承到我的db類中。PHP-無法從另一個類的mysqli類中引用方法

這裏是DB類:

class DB extends mysqli 
{ 
    protected $mysqli; 

    public function __construct() { 
     // connect to MySQL 
     $mysqli = new mysqli('host', 'username', 'password', 'dbname'); 

     // output error if unable to connect 
     if ($mysqli->connect_errno) { 
      echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " .  $mysqli->connect_error; 
      exit; 
     } 
    } 
} 

這裏是主要的會議類:

class Meetings 
{ 

    function __construct() { 
     require_once('../include/classes/db.class.php'); 
     $db = new DB(); 

     $field = $db->real_escape_string($_POST['about']); 

    } 

} 

在會議類,我希望能夠通過實例化DB調用real_escape_string方法類由超全球mysqli類繼承。

我得到這個錯誤:警告:mysqli的:: real_escape_string()[mysqli.real轉義字符串]:無法獲取DB

回答

0

糟糕! 您創建了DB對象,而db對象創建了另一個mysqli類的實例。你不應該叫新的mysqli,但你應該叫

parent::__construct('host', 'username', 'password', 'dbname') 

parent::mysqli('host', 'username', 'password', 'dbname') 

我不知道這是和mysqli構造良好的格式。

在此之後,您不需要DB類中的mysql屬性,因爲在這種情況下,您的mysqli屬性與DB類的$ this相等。因此,不是$ mysqli-> connect_errno,而是$ this-> connect_errno是正確的。

+0

杜,我在想什麼?謝謝! – tailsnaker

+1

父:: mysqli是正確的格式順便說一句 – tailsnaker