I'm trying to make just one connection with my code down below.
Inside func.php I added function __construct
but does not work. Error:
Uncaught Error: Call to protected method dbh::connect() from context 'getPosts'.
I read some articles and I don't really understand where function __construct
should be placed. Inside my connect.php or func.php?
public $conn;
public function __construct() {
$this->conn = new dbh();
$this->conn = $this->conn->connect();
}
MY code: 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;
}
}
func.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]);
}
}