Как уже сказали, дело в версии РНР.
Плюс этот неграмотный винегрет надо выкинуть и переписать заново
вот тебе нормальный код
class Database
{
public $db;
public function __construct($host, $user, $password, $database)
{
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$this->db = new MySQLi($host, $user, $password, $database);
$this->db->set_charset("utf8mb4");
}
public function query($query, $params = [], $types= '') {
$types = $types ?: str_repeat("s", count($params));
$stmt = $this->db->prepare($query);
$stmt->bind_param($types, ...$params);
$stmt->execute();
return $stmt;
}
public function select($query, $params = [], $types= '') {
if (!$params) {
return $this->db->query($query);
} else {
return $this->query($query, $params)->get_result();
}
}
}