Ну так ты в своем классе никому не сказала выводить ошибки. Вот он и молчит.
Вот тебе
нормальный класс.
class Db
{
public $dbh;
public function __construct()
{
$config = (include __DIR__.'/../../config.php')['db'];
$options = [
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
\PDO::ATTR_EMULATE_PREPARES => false,
];
$dsn = "mysql:host=$config[host];dbname=$config[dbname];charset=utf8mb4";
$this->dbh = new \PDO($dsn, $config['login'], $config['password'], $options);
}
public function query(string $sql, array $data = [])
{
$sth = $this->dbh->prepare($sql);
$sth->execute($data);
return $sth;
}
public function getAll(string $sql, array $data = [])
{
return $this->query($sql, $data)->fetchAll();
}
}
- dbh сделана пуличной. lastInsertId() ты откуда будешь доставать?
- добавлено включение информирования об ошибках
- добавлена поддержка LIMIT
- добавлено выставление кодировки, чтобы потом не было вопросов "ой у меня крокозябры!!"
- убрана бессмысленная функция execute
- функция query сделана осмысленной и универсальной
- параметр $data сделан опциональным
- добавлена функция для получения массива строк
И запомни - создавать его надо
один раз на всё приложение.
$dbh = new \App\Db();
$about = $dbh->getAll('SELECT * FROM about');
var_dump($about);die;