a parte che sta roba è db, e tu hai postato in php... se definisci come separatore un carattere, ogni volta che il parser lo incontra pensa (giustamente) che sia una nuova colonna.

detto questo, l'unica è che chi produce il file .csv racchiuda ogni campo tra virgolette

Autore; Titolo
"Ciccio Pasticcio";"Cucina; mangio; e rimangio"