Я пытаюсь установить только одно соединение с моим кодом внизу.
Внутри забавы c. php Я добавил функцию __construct
, но она не работает. Ошибка:
Uncaught Ошибка: вызов защищенного метода dbh :: connect () из контекста 'getPosts'.
Я прочитал несколько статей и не совсем понял где должна быть размещена функция __construct
. Внутри моего соединения. php или весело c. php?
public $conn;
public function __construct() {
$this->conn = new dbh();
$this->conn = $this->conn->connect();
}
МОЙ код: подключить. php
class dbh{
private $host = "localhost";
private $user = "root";
private $pwd = "12345";
private $dbname = "posts";
protected function connect() {
$dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname;
$pdo = new PDO ($dsn, $this->user, $this->pwd);
$pdo->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
return $pdo;
}
}
веселье c. php
class PostsData extends dbh{
public function getPosts() {
$sql = "SELECT * FROM posts_tbl";
$stmt = $this->connect()->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll((PDO::FETCH_OBJ));
return $result;
}
public function addPost($filter_author, $filter_title, $filter_txt) {
$sql = "INSERT INTO posts_tbl (post_author, post_title, post_txt) VALUES (?, ?, ?, ?)";
$stmt = $this->connect()->prepare($sql);
$stmt->execute([$filter_author, $filter_title, $filter_txt]);
}
}