PHP PDO fetchAll () в bool - PullRequest
       12

PHP PDO fetchAll () в bool

0 голосов
/ 17 марта 2019

Я пытаюсь написать свой собственный класс-оболочку PDO, мои утверждения всегда возвращают true, и я ничего не могу получить.

Вот мой DB класс

class DB {

private $db;
private $host = "localhost";
private $database = "test";
private $user = "test";
private $password ="test";

public function __construct(){
    try {
        $this->db = new \PDO("mysql:host=" . $this->host . ";dbname=" . $this->database, $this->user, $this->password);
        $this->db->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
    } catch (\PDOException $error) {
        die("Verbindung zur Datenbank fehlgeschlagen: <br>" . $error);
    }
}

public function run($sql, $args = []){
    try{
        $stmt = $this->db->prepare($sql);
        $result = $stmt->execute($args);
        return $result;
    } catch(\PDOException $error) {
        die("Fehler bei Datenbankabfrage: <br>". $error);
    }
}
}

И здесь я создаю новый экземпляр моего класса и пытаюсь получить данные

$DB = new DB();
$data = $DB->run("SELECT * FROM testtbl")->fetchAll();

Без fetchAll() он возвращает true и с ним выдает ошибку в моем error.log

PHP Фатальная ошибка: Uncaught Ошибка: вызов функции-члена fetchAll () для логического

Было бы хорошо, если кто-то может мне помочь.

1 Ответ

1 голос
/ 17 марта 2019

PDOStatement::execute просто возвращает логическое значение, которое сообщает, был ли запрос успешным или нет.Вам нужно позвонить fetchAll в заявлении, поэтому вместо

return $result;

вы должны иметь

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