Какая гадость эта ваша заливная рыба... Очень странно видеть вывод разметки через пыху, конечно, но дело не моё.
Для начала - никогда не используй query(), используй плейсхолдеры ($db->prepare(твой сикуэль запрос, при этом все значения, вставляемые извне замени на ? (знак вопроса для чайников)); $db->execute([а тут перечисляй вставляемые значения по порядку]);
Убережешь себя от инъекций.
Соответственно, фетчить так - тоже не выход, старовато. Юзай $msg->fetchAll() для выбора ВСЕХ подходящих по условию строк (либо fetch() для одной первой попавшейся по условию строки). Ну а там уже можно и мозгами пораскинуть, куда что и как подставлять.