Hi!
$sql = 'SELECT
Vorname,
Nachname,
FROM
Tabelle
WHERE
UserId =(?)';
Die Klammer um den Platzhalter kann weg.
$ergebnis = $db->prepare($sql);
Nebenbei: Der Name $ergebnis ist irreführend, weil ein Prepared Statement noch kein Ergebnis darstellt.
$ergebnis->bind_param('s',$UserId);
$ergebnis->execute();
$ergebnis->bind_result($Vorname, $Nachname);
So sieht das schon etwas besser aus. Allerdings hast du immer noch keine Fehlerbehandlung eingebaut. Schau im PHP-Handbuch nach, was die Methoden im Fehlerfall liefern und prüfe vor dem Fortsetzen, ob nicht solch ein Fehlerwert geliefert wurde.
Außerdem wäre der Handbuch-Blick (beispielsweise für bind_result()) auch für dein Problem von Nutzen gewesen, denn dann wäre dir beim Lesen der dortigen Hinweise vielleicht aufgefallen, dass du vergessen hast, eine weitere Methode aufzurufen.
Lo!