Ciao, in rete ho trovato questo codice, che ho testato e funziona correttamente 
Codice PHP:
<?php
$host = ""; // <-- inserisci qui l'indirizo ip di MySql
$user = ""; // <-- nome utente del database
$pass = ""; // <-- password dell'utente
$db = ""; // il database desiderato
$table = ""; // la tabella da esportare in .csv
$file = $table; // il nome del file csv da generare
$link = mysql_connect($host, $user, $pass) or die("Can not connect." . mysql_error()); /* usa i dati forniti per connetterti a MySql, se impossibile interrompi */
mysql_select_db($db) or die("Can not connect."); // seleziona il db desiderato oppure interrompi
$csv_output="";
$result = mysql_query("SHOW COLUMNS FROM ".$table."");
$i = 0;
if (mysql_num_rows($result) > 0) {
while ($row = mysql_fetch_assoc($result)) {
$csv_output .= $row['Field']."; ";
$i++;
}
}
$csv_output .= "\n";
$values = mysql_query("SELECT * FROM ".$table."");
while ($rowr = mysql_fetch_row($values)) {
for ($j=0;$j<$i;$j++) {
$csv_output .= $rowr[$j]."; ";
}
$csv_output .= "\n";
}
$filename = $file."_".date("d-m-Y_H-i",time()); // il nome del file sara' composto da quello scelto all'inizio e la data ed ora oggi
/*$archivia = new ZipArchive();
$nome_file="archiviodb.zip";
if ($archivia->open($nome_file, ZIPARCHIVE::CREATE)!==TRUE)
{
@exit("Impossibile aprire <$nome_file>\n");
}
$archivia->addFile("$filename.csv");*/
header("Cache-Control: public");
header("Content-Description: File Transfer");
header( "Content-disposition: attachment;filename=".$filename.".csv");
header("Content-type: application/ms-excel");
header("Content-Transfer-Encoding: binary");
//header("Content-disposition: csv" . date("Y-m-d") . ".csv");
print $csv_output; // il file e' pronto e puo' essere scaricato
exit;
?>
Spero ti sia d'aiuto