Inoltre ho visto che si potrebbe sia esportare direttamente da MySQL

Codice PHP:
...
INTO OUTFILE ‘/tmp/result.txt’
FIELDS TERMINATED BY ‘
,’ OPTIONALLY ENCLOSED BY ‘”‘
LINES TERMINATED BY ‘
\n’
... 
oppure utilizzare fputcsv()

ma in entrambi i casi il file verrebbe salvato sul server (dico giusto oppure ho capito male?), mentre io voglio che venga direttamente scaricato.