Você está produzindo exatamente como o MySQL o armazena. O navegador está configurado para exibi-lo de maneira diferente da saída porque você está enviando conteúdo de texto para uma página HTML. (Em particular, ele não exibe uma nova linha para cada nova linha que você produz).
Para que ele seja exibido em HTML corretamente, você precisa substituir as novas linhas por um caractere de quebra de linha,
nl2br
é uma função útil para esse propósito exato. Outras maneiras de forçar o navegador a exibi-lo como você pretende é definir o tipo de conteúdo como
text/plain
em vez de text/html
ou use o <pre>
marcação.