U wilt niet dat het als één query wordt uitgevoerd. Het is meestal beter om veel kleine eenvoudige zoekopdrachten te hebben in plaats van één ingewikkelde zoekopdracht. Ik zou zelfs willen voorstellen dat je je code bijwerkt om nog meer zoekopdrachten te hebben, bijvoorbeeld de inhoud van de "niet bestaat()" zou niet als een subquery moeten worden gedaan, het zou een volledig afzonderlijke zoekopdracht moeten zijn om de prestaties te verbeteren.
Er zijn twee delen, eerst moet u de juiste HTTP-headers verzenden om een CSV-download te activeren:
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="export.csv";' );
Print vervolgens de gegevens in CSV-formaat:
while ($row = mysql_fetch_array($myQuery)) {
$first = true;
foreach ($row as $cell) {
if ($first)
$first = false;
else
print ',';
print '"' . addslashes($cell) . '"';
}
print "\n";
}
Opmerking:CSV is een slecht formaat en dit werkt alleen in sommige edities van Microsoft Excel. Afhankelijk van waar de gebruiker woont (bijvoorbeeld:Europa) werkt het mogelijk niet goed. Voor de meeste edities van Excel zal het bovenstaande echter werken. Er is geen goede oplossing, behalve om het gebruik van CSV te vermijden.