Du ønsker ikke, at det skal køre som én forespørgsel. Det er normalt bedre at have mange små simple forespørgsler i stedet for én kompliceret forespørgsel. Faktisk vil jeg foreslå, at du opdaterer din kode til at have endnu flere forespørgsler, for eksempel bør indholdet af "ikke eksisterer()" ikke udføres som en underforespørgsel, det skal være en helt separat forespørgsel for at forbedre ydeevnen.
Der er to dele, først skal du sende de korrekte HTTP-headere for at udløse en CSV-download:
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="export.csv";' );
Så udskriv blot dataene i CSV-format:
while ($row = mysql_fetch_array($myQuery)) {
$first = true;
foreach ($row as $cell) {
if ($first)
$first = false;
else
print ',';
print '"' . addslashes($cell) . '"';
}
print "\n";
}
Bemærk:CSV er et dårligt format, og dette vil kun fungere i nogle udgaver af Microsoft Excel. Afhængigt af hvor brugeren bor (f.eks. Europa) fungerer det muligvis ikke korrekt. For de fleste udgaver af Excel vil ovenstående dog fungere. Der er ingen god løsning bortset fra at undgå at bruge CSV.