Anda tidak ingin itu berjalan sebagai satu kueri. Biasanya lebih baik memiliki banyak kueri kecil yang sederhana daripada satu kueri yang rumit. Bahkan saya akan menyarankan Anda memperbarui kode Anda untuk memiliki lebih banyak kueri, misalnya konten "tidak ada ()" tidak boleh dilakukan sebagai subkueri, itu harus menjadi kueri yang benar-benar terpisah untuk meningkatkan kinerja.
Ada dua bagian, pertama Anda harus mengirim header HTTP yang benar untuk memicu unduhan CSV:
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="export.csv";' );
Kemudian tinggal print datanya dalam 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";
}
Catatan:CSV adalah format yang buruk, dan ini hanya akan berfungsi di beberapa edisi Microsoft Excel. Tergantung di mana pengguna tinggal (misalnya:Eropa) itu mungkin tidak berfungsi dengan baik. Namun, untuk sebagian besar edisi Excel di atas akan berfungsi. Tidak ada solusi yang baik kecuali menghindari penggunaan CSV.