Не искате да се изпълнява като една заявка. Обикновено е по-добре да имате много малки прости заявки вместо една сложна заявка. Всъщност бих ви предложил да актуализирате кода си, за да има още повече заявки, например съдържанието на „not exists()“ не трябва да се прави като подзаявка, трябва да бъде напълно отделна заявка за подобряване на производителността.
Има две части, първо трябва да изпратите правилните HTTP заглавки, за да задействате изтегляне на CSV:
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="export.csv";' );
След това просто отпечатайте данните във формат CSV:
while ($row = mysql_fetch_array($myQuery)) {
$first = true;
foreach ($row as $cell) {
if ($first)
$first = false;
else
print ',';
print '"' . addslashes($cell) . '"';
}
print "\n";
}
Забележка:CSV е лош формат и това ще работи само в някои издания на Microsoft Excel. В зависимост от това къде живее потребителят (например:Европа) може да не работи правилно. За повечето издания на Excel обаче горното ще работи. Няма добро решение, освен да избягвате използването на CSV.