вызов класса (объекта) в PHP OOP - PullRequest
0 голосов
/ 19 июня 2020

У меня есть класс под названием dbConnect, его функция - подключиться к базе данных и управлять данными, например (вставить, прочитать ... и т. Д. c), на данный момент я сделал только один метод getRows этот метод предполагает в fetchAll строк из таблицы, проблема в том, что когда я создаю новый объект (новое соединение) и вызываю метод getRows, ничего не происходит вообще, даже не исключение, так что я сделал не так? что мне здесь не хватает?

Core. php

<?php
class dbConnect {
    //  properties 
    // Host name
    public $db_host  = '';
    // database username
    protected $db_user = '';
    // database password 
    protected $db_pass = '';
    // database username
    protected $db_name = '';
    // connection property @boolean * important
    protected $connection;
    // connection states property @boolean
    public $connected = false;
    // Errors handler @boolean property
    private $errors = true;
    // contstract
    public function __construct($db_host, $db_user, $db_pass, $db_name)
    {
        global $c;
        try{
                $this->host = $db_host;
                $this->username = $db_user;
                $this->password = $db_pass;
                $this->database = $db_name;
                //  new PDO instans connection
                $this->connection = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->database, $this->username, $this->password);
                $this->connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                $this->connection->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
                $this->connection->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
        }
        catch(PDOException $e){
                $this->connected = false;
                if($this->errors == true){
                    return $this->error($e->getMessage());

                } else {
                    return false;
                }
        }
    }
    //  Destruct destroies all 

    function __destruct(){
        $this->connected = false;
        $this->connection = null;
    }

    // Error Methods Outputs $e //

    public function error($errors){
        echo $errors;
    }

    // Fetching Rows Method

    public function getRows($query, $params = array()){
        if($this->connected === true){
            try{
                $query = $this->connection->prepare($query);
                $query->execute($params);
                return $query->fetchAll();
            }
            catch(PDOException $e){
                if($this->errors === true){
                    return $this->error($e->getMessage());
                }else{
                    return false;
                }
            }
        }else{
            return false;
        }
    }
}
?>

функций. php

<?PHP

include('Core.php');
$db = new dbConnect('127.0.0.1','root','password','project-db'); // i also tried [ localhost ] as hostname //

?>
<HTML>
<head><title></title>
</head>
<body>
    <div class="container bg-dark" style="color:whitesmoke; width:auto;">
        <?php
        $db->getRows('SELECT * FROM `drafts` ORDER BY id DESC');
        ?>
    </div>
</body>
</HTML>

1 Ответ

1 голос
/ 20 июня 2020

Вы никогда не устанавливаете $this->connected в true, поэтому условие if($this->connected === true){ в function getRows() никогда не выполняется, т.е. вы не получите свои строки, вы получите false возвращено.

Предложите вы устанавливаете $this->connected на true, когда получаете действительный объект PDO при подключении в вашем __construct().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...