echo $begrüßung;
ich lese aus der Db die variable $dbvar aus
in dieser steht meinetwegen $dbvar = "Kosten: $kosten";
nu möchte ich, da ich die variable $kosten schon auf 20 gesetzt habe,
dass er mir anzeigt: Kosten: 20
aber bei mir kommt immer Kosten: $kosten
Damit hast du einen String, der eine Zeichenfolge enthält, die einen Variablennamen darstellt. Da das Script nun bereits läuft ist der Parser schon längst mit seiner Arbeit fertig und kümmert sich nicht mehr um diesen Variablennamen. Das macht er erst dann, wenn man ihn dazu auffordert, diesen String zu evaluieren (eval()), was aber nicht immer eine gute Idee ist. Besser wäre, einfach nur den Wert in der DB zu halten und die Ausgabe im Template/Script zusammenzubauen.
Wenn der String in der Datenbank ein Template darstellen soll, wären einfache Platzhalter besser als Programmcode.
echo "$verabschiedung $name";