PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false] ); } return self::$pdo; } public static function query(string $sql, array $params = []): array { $stmt = self::get()->prepare($sql); $stmt->execute($params); return $stmt->fetchAll(); } public static function execute(string $sql, array $params = []): int { $stmt = self::get()->prepare($sql); $stmt->execute($params); return $stmt->rowCount(); } public static function single(string $sql, array $params = []): ?array { $rows = self::query($sql, $params); return $rows[0] ?? null; } public static function insert(string $sql, array $params = []): int { $stmt = self::get()->prepare($sql); $stmt->execute($params); return (int)self::get()->lastInsertId(); } }