Итак, я думаю, что задавал этот вопрос и другие, связанные с ним, более двух раз.Но я не могу понять, что происходит.
Я использую эту функцию PHP для экспорта некоторых данных из таблицы в таблицу CSV.Я тестирую на локальном хосте (XAAMP):
// Export CSV By User Level
public function CSVData($path, $level) {
switch ($level) {
case 0:
$filename = $path."/standard_members_".date('Y')."_".date('m')."_".date('d').".csv";
break;
case 1:
$filename = $path."/special_members_".date('Y')."_".date('m')."_".date('d').".csv";
break;
case 2:
$filename = $path."/admin_members_".date('Y')."_".date('m')."_".date('d').".csv";
break;
default:
break;
}
$sql = "SELECT user_name, user_username, user_email, user_register_date INTO OUTFILE '$filename' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' LINES TERMINATED BY '\n' FROM users WHERE user_level = '$level'";
if ($stmt = $this->connect->prepare($sql)) {
if(!($stmt->execute())){
print_r($stmt->error);
}
$stmt->close();
} else {
$error = true;
$message['error'] = true;
$message['message'] = CANNOT_PREPARE_DATABASE_CONNECTION_MESSAGE;
return json_encode($message);
}
if(!is_file($filename)) {
die('file not found');
} else {
header('Content-Type: application/csv');
header("Content-Disposition: attachment; filename=$filename");
header('Expires: 0');
header('Pragma: no-cache');
readfile($filename);
}
}
И у меня есть форма, которая выполняет действие, я имею в виду, что она передает действие в файл PHP, который обрабатывает вышеуказанную функцию, и это действиекод:
<?php
include '../assets/class/login/loginsys.php';
$extension = new extension;
if ($_GET['action'] == 0) {
$extension->CSVData('exports', 0);
} elseif ($_GET['action'] == 1) {
$extension->CSVData('exports', 1);
} elseif ($_GET['action'] == 2) {
$extension->CSVData('exports', 2);
}
exit();
?>
Что происходит следующим образом:
- когда я нажимаю кнопку отправки в имеющейся форме, она отправляет значение 0, 1 или 2 в код действия;-код действия получает значение и обрабатывает соответственно;-но если бы я не создал папку 'exports' на localhost, если бы дал мне эту ошибку:
Can't create/write to file 'C:xampphtdocsloginadminexports\standard_members_2012_01_28.csv' (Errcode: 2);
-и я создал ее, чтобы она могла работать;-в настоящее время в этой папке создается файл CSV, а данные сбрасываются в таблицу CSV;- но файл, который открывается в моем браузере (вложение, которое загружается так, как если бы вы щелкали файл с какого-либо веб-сайта и загружали его), оно пустое, даже если файл, экспортированный в «export», содержит данные;-и другое дело, что, когда файл уже существует в папке «export», созданная таблица говорит мне:
File 'exports/admin_members_2012_01_29.csv' already exists
Итак, мой вопрос: почему происходит то, что я описал?И есть ли способ заставить запрос MySql перезаписать предыдущий файл CSV?