Sprich: die Datensätze werden nicht gefunden? Dann gib die Syntax mal bei phpmyadmin bei SQL ein schaue, was dir angezeigt wird.
Zum anderen wenn ich es richtig sehe, wird bei der foreachschleife (Z. 41) mehrmals die String Variable beschrieben, je nach dem wie viele Datensätze vorhanden sind, in diesen Fall solltest du innerhalb der schleife 2 Variablen verwenden Bspw. mainstring und String wo du mit strcat den String bei Mainstring anfängst. Sonst wird string immer überschrieben und immer nur einmal angezeigt.
Zwecks der Charakternamen, printe mal die MySQL Anweisung. Vllt liegt da der Fehler.
Und für was den Stock CharakterName, wenn dieser bereits in eine globale Variable gespeichert wurde?