扩展数据库类以从MySql获取结果

时间:2016-12-11 07:51:07

标签: php mysql database class oop

我一直在努力学习如何在MVC结构中使用php类进行数据库操作。这是一个连接数据库的简单数据库类。

<?php
class Database
{
private $connect;
private $host, $username, $password, $databaseName;

public function __construct($host, $username, $password, $databaseName)
{
    $this->host = $host;
    $this->username = $username;
    $this->password = $password;
    $this->databaseName = $databaseName;

    $this->connect = new mysqli($this->host, $this->username, $this->password, $this->databaseName);

    if ($this->connect->connect_error) {
        die('Connect Error (' . $this->connect->connect_errno . ') '. $this->connect->connect_error);
    }

    return true;
}

public function __destruct()
{
    $this->connect->close();
}
}

实例化连接类

$db = new Database("localhost", "root", "", "framework");

直到这里,如果出现错误,它会连接并显示和错误。

现在我在数据库中有一个表'Members',其中包含三列1. Id,2。Name和3. Email并在members表中显示记录 我在模型文件夹(MVC)中有一个成员模型文件。我试图像这样扩展Database类

class Members extends Database {
    public function getMembers() {
        $result = $this->connect->query("SELECT * FROM members");
        return $query->row;
    }
}

我无法做的事(过去24小时)显示结果。

P.S。即使你可以建议我如何扩展数据库类的教程,也会很棒。

1 个答案:

答案 0 :(得分:0)

1)。子类无法直接访问其父私有属性,因此您需要 public 修饰符方法从其任何子类访问其属性

public function getConnect(){
return $this->connect;
}
public function getUsername(){
return $this->username;
}

public function getPassword(){
return $this->password;
}

public function getDatabaseName(){
return $this->databaseName;
}

2).Parent有一个构造函数来初始化这些$host$username, $password$databaseName因此子构造函数必须引用它自己的父构造函数构造

继承中,我们不直接实例化父类,而是通过扩展它的类初始化其父属性(所以$host$username,{{ 1}},$password通过子类初始化)。如果你仍然直接实例化父类,那么再也没有必要使用继承了。

$databaseName