Zasadniczo nie można za jednym razem wyprowadzić pliku CSV i łącza do niego. (Musisz wprowadzić pojęcie "trybu" strony i aktywować tryb pobierania za pomocą ...pagename.php?mode=download lub podobnego. Następnie możesz użyć instrukcji switch PHP, aby włączyć $_GET['tryb'] w swoim skrypcie).
To powiedziawszy, używany nagłówek typu treści text/csv jest poprawny, chociaż możesz również chcieć wyprowadzić nagłówki Content-Length i Content-Disposition. Po wyprowadzeniu danych pliku należy również zatrzymać wszelkie dodatkowe przetwarzanie skryptu za pomocą exit
PHP funkcja.
Dodatkowo, prawdopodobnie byłoby znacznie mniej kłopotów (i na pewno będzie szybsze/bardziej wydajne pod względem pamięci) użycie MySQL WYBIERZ... DO POZYCJI (jeśli masz uprawnienia), zamiast używać PHP do zbierania danych.