Nie chcesz, aby działał jako jedno zapytanie. Zwykle lepiej jest mieć wiele małych, prostych zapytań zamiast jednego skomplikowanego zapytania. W rzeczywistości sugerowałbym zaktualizowanie kodu, aby mieć jeszcze więcej zapytań, na przykład zawartość „nie istnieje()” nie powinna być wykonywana jako podzapytanie, powinno to być całkowicie oddzielne zapytanie, aby poprawić wydajność.
Są dwie części, najpierw musisz wysłać prawidłowe nagłówki HTTP, aby uruchomić pobieranie CSV:
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="export.csv";' );
Następnie wydrukuj dane w formacie CSV:
while ($row = mysql_fetch_array($myQuery)) {
$first = true;
foreach ($row as $cell) {
if ($first)
$first = false;
else
print ',';
print '"' . addslashes($cell) . '"';
}
print "\n";
}
Uwaga:CSV to zły format i będzie działać tylko w niektórych wersjach programu Microsoft Excel. W zależności od miejsca zamieszkania użytkownika (np. Europa) może nie działać poprawnie. Jednak w większości wydań programu Excel powyższe będzie działać. Nie ma dobrego rozwiązania poza unikaniem używania CSV.