Не удается отобразить данные при вызове метода из наследования классов PHP

#php

Вопрос:

Всем привет, я новый программист и программирую проект веб — сайта мероприятия. У меня есть некоторые проблемы с извлечением данных при вызове метода из дочернего класса. Кто-нибудь может мне помочь?

Database.php

 class Database {

private $dns = "mysql:host=localhost; dbname=event_management; port=3306; charset=utf8mb4";
private $username = "root";
private $password = "";
private $pdo, $stmt;

public function __construct()
{
    try {
        $this->pdo = new PDO($this->dns,$this->username,$this->password);
        $this->pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
    } catch (Exception $th) {
        Message::showMess("Connection failed: ".$th->getMessage());
    }
}

public function crudData($query,$param=[], $option=[]){
    try {
        $this->stmt = $this->pdo->prepare($query,$option);
        $this->stmt->execute($param);
        return $this->stmt;
    } catch (Exception $th) {
        Message::showMess("Error: ".$th->getMessage());
    }
}
 

Query.php

 include "Database.php";
  class Query extends Database {
  private static $selection;
  private $query;
  private $param = [];

  public function __construct($query){
    $this->query = $query;
  }

  public function execute(){
    return $this->crudData($this->query, $this->param);
  }
}

//Run code
$query = new Query("SELECT * FROM events");
print_r($query->execute());

/* Result ---------------------
`Fatal error: Uncaught Error: Call to a member function prepare() on null in 
C:xampphtdocsFinalProjectdatabaseDatabase.php:22 Stack trace: #0 
C:xampphtdocsFinalProjectdatabaseDatabase.php(188): Database->crudData('SELECT * 
FROM e...', Array) #1 C:xampphtdocsFinalProjectdatabaseDatabase.php(194): Query- 
>execute() #2 {main} thrown in`
*/
 

event_table_data

Комментарии:

1. Не могли бы вы, пожалуйста, попробовать создать экземпляр класса базы данных. Перед $query = новый запрос(«ВЫБРАТЬ * ИЗ событий»); поместите $database = новая база данных();

2. Я создал его экземпляр при выполнении функции (), и он не может отображаться

3. Я верю, что вы этого не сделали, потому что переопределили конструктор. Может быть, перед — $это->запрос = $запрос; поместите родителя::__построить();

4. @g9m29 О, я исправил это, основываясь на вашем ответе, спасибо за многое.

5. Не беспокойтесь, рад, что смог помочь 🙂