echo $begrüßung;
Mir ging es ja eigentlich nur drum wie DU das als Experte oder zumindest als erfahrener User so etwas umsetzen würdest.
Bestmöglich. Wie das konkret aussieht kommt auf die Begleitumstände an. Das Verhältnis von Aufwand zu Nutzen ist ebenfalls nicht zu vernachlässigen. Bei wenigen Datensätzen nehmen sich die Methoden nichts. Welche davon ist am ehesten verständlich, wartbar und dabei möglichst elegant? Das ist die Frage, die dann zur Entscheidung führt.
Ich möchte gerne gleich von Anfang an Fehler vermeiden.
Das ist nicht unbedingt erstrebenswert, denn aus Fehlern kann man am besten lernen. Deswegen gab ich dir ja nur den allgemeinen Tipp, selbst Messungen durchzuführen und daraufhin die Varianten zu bewerten.
Würdest du denn die 3 Variante für vertretbar halten?
Ja, allerdings mit Änderungen.
try {
$result = $pdo->query('SELECT username, uservorname FROM testuser')->fetchAll();
Statt $result nähme ich hier einen sprechenderen Variablennamen, z.B. $users. Besonders wenn man sein Programm nach EVA gliedert, ist das günstiger als das nichtssagende $result.
$anzahl = count($result);
if ($anzahl == 0){
Die Variable $anzahl anzulegen ist überflüssig, wenn du sie nicht noch im weiteren Verlauf benötigst. Außerdem ließe ich das == 0 weg. count() liefert bereits ein als boolean auswertbares Ergebnis, wenn auch ein negiertes im Vergleich zu == 0.
if (count($users)) {
foreach ...
else
echo ...
echo"<option value="$row[0][username]">$row[0][uservorname]</option>\n";
Kontextwechsel beachten! Wenn du Werte in den HTML-Kontext bringst, musst du sie HTML-gerecht behandeln, z.B: mit htmlspecialchars(). Es gibt Leute, die gegen ihren Kindern komische Namen (das ist zwar ein Datenbank-Kontext, das Prinzip ist aber das gleiche).
echo "$verabschiedung $name";