Vous ne voulez pas qu'il s'exécute comme une seule requête. Il est généralement préférable d'avoir beaucoup de petites requêtes simples au lieu d'une seule requête compliquée. En fait, je vous suggérerais de mettre à jour votre code pour avoir encore plus de requêtes, par exemple le contenu de "not exists()" ne devrait pas être fait comme une sous-requête, il devrait s'agir d'une requête complètement séparée pour améliorer les performances.
Il y a deux parties, vous devez d'abord envoyer les en-têtes HTTP corrects pour déclencher un téléchargement CSV :
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="export.csv";' );
Ensuite, imprimez simplement les données au format CSV :
while ($row = mysql_fetch_array($myQuery)) {
$first = true;
foreach ($row as $cell) {
if ($first)
$first = false;
else
print ',';
print '"' . addslashes($cell) . '"';
}
print "\n";
}
Remarque :CSV est un mauvais format, et cela ne fonctionnera que dans certaines éditions de Microsoft Excel. Selon l'endroit où vit l'utilisateur (par exemple :l'Europe), il peut ne pas fonctionner correctement. Pour la plupart des éditions d'Excel, ce qui précède fonctionnera cependant. Il n'y a pas de bonne solution si ce n'est d'éviter d'utiliser CSV.