Ну или так.
Кучерявые аннотации расставишь сам
class Database
{
public $pdo;
public function __construct()
{
$options = [
\PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
\PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC,
\PDO::ATTR_EMULATE_PREPARES => false,
];
$config = require_once 'config.php';
$dsn = 'mysql:host='.$config['host'].';dbname='.$config['db'].';charset='.$config['charset'];
$this->pdo = new \PDO($dsn, $config['username'], $config['password'], $options);
}
public function query($sql, $params)
{
$sth = $this->pdo->prepare($sql);
$sth->execute($params);
return $sth;
}
}
Больше никаких методов в него не добавлять.
Если вдруг зачешется добавить - спросить меня, я объясню почему это не нужно и как сделать правильно.
После этого спокойно добавить запись в БД
$db = new Database();
$sql = "INSERT INTO `reviews`(`id`, `name`, `descriptions`, `url_image`, `rating`) VALUES(:name, :description, :url_image, :rating)";
$db->query($sql, $reviewUser);
echo "Запись успешно создана!";
Но учитывя уровень понимания своего кода - лучше пока годик забыть просвои классы и использовать только готовые.