2

我有 MysqliDb https://github.com/joshcam/PHP-MySQLi-Database-Class

在我的 php 类中:

<?php 
require_once ('MysqliDb.php');

class Main{

protected $db;   


public function __construct()
{
    $this->db = new MysqliDb ('localhost', 'root', 'tuncay', 'db');
}

}

Class A extends Main{

public function __construct()
{   
    $this->db = MysqliDb::getInstance();
    echo $this->db->where("id", 5)->getOne('test')['text'];
}

}

$a = new A();

?>

致命错误:在第 21 行的 /.../db/index.php 中调用成员函数 where() on null where() 函数属于 MysqliDb.php

怎么了?我从 Main 类得到 $this->db

我只想在 A 类中保持数据库连接并使用它。

4

2 回答 2

2

您的 A 类替换父 __construct。尝试添加

Class A extends Main{
  public function __construct()
  {   
     parent::__construct();
     $this->db = MysqliDb::getInstance();
     echo $this->db->where("id", 5)->getOne('test')['text'];
  }
  ...
}
于 2016-07-29T08:45:28.377 回答
1

那么你的意思是我可以这样做:

<?php 
require_once ('MysqliDb.php');

class Main{

  protected  $db;   

   public function connectDB()
   {
    $this->db = new MysqliDb ('localhost', 'root', 'pass', 'db');
   }
}

Class A extends Main{
   public function __construct()
   {   
    $this->connectDB();
    echo $this->db->where("id", 5)->getOne('test')['text'];
   }
}

$a = new A();
?>

这是正常的吗?我的意思是,每次调用 connectDB() 函数都不会损坏内存?或者它每次都会调用相同的内存部分......?

于 2016-07-29T11:06:48.970 回答