Bạn không muốn nó chạy dưới dạng một truy vấn. Thường tốt hơn nếu có nhiều truy vấn đơn giản nhỏ thay vì một truy vấn phức tạp. Trên thực tế, tôi khuyên bạn nên cập nhật mã của mình để có nhiều truy vấn hơn nữa, chẳng hạn như nội dung của "không tồn tại ()" không nên được thực hiện như một truy vấn con, nó phải là một truy vấn hoàn toàn riêng biệt để cải thiện hiệu suất.
Có hai phần, trước tiên bạn cần gửi tiêu đề HTTP chính xác để kích hoạt tải xuống CSV:
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="export.csv";' );
Sau đó, chỉ cần in dữ liệu ở định dạng CSV:
while ($row = mysql_fetch_array($myQuery)) {
$first = true;
foreach ($row as $cell) {
if ($first)
$first = false;
else
print ',';
print '"' . addslashes($cell) . '"';
}
print "\n";
}
Lưu ý:CSV là một định dạng không hợp lệ và điều này sẽ chỉ hoạt động trong một số phiên bản của Microsoft Excel. Tùy thuộc vào nơi người dùng sinh sống (ví dụ:Châu Âu), nó có thể không hoạt động bình thường. Tuy nhiên, đối với hầu hết các phiên bản Excel, cách trên sẽ hoạt động. Không có giải pháp tốt nào ngoại trừ việc tránh sử dụng CSV.