Giả sử tôi đã lưu trữ một truy vấn trong một biến gọi là truy vấn $. Tôi muốn tạo liên kết siêu nhỏ được gọi là "xuất dưới dạng CSV" trên trang kết quả. Làm thế nào để tôi làm điều này?kết quả truy vấn xuất dưới dạng CSV thông qua PHP
7
A
Trả lời
11
$query = "SELECT * FROM table_name";
$export = mysql_query ($query) or die ("Sql error : " . mysql_error());
$fields = mysql_num_fields ($export);
for ($i = 0; $i < $fields; $i++)
{
$header .= mysql_field_name($export , $i) . "\t";
}
while($row = mysql_fetch_row($export))
{
$line = '';
foreach($row as $value)
{
if ((!isset($value)) || ($value == ""))
{
$value = "\t";
}
else
{
$value = str_replace('"' , '""' , $value);
$value = '"' . $value . '"' . "\t";
}
$line .= $value;
}
$data .= trim($line) . "\n";
}
$data = str_replace("\r" , "" , $data);
if ($data == "")
{
$data = "\n(0) Records Found!\n";
}
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=your_desired_name.xls");
header("Pragma: no-cache");
header("Expires: 0");
print "$header\n$data";
5
ehm?
<a href="yourexport.php" title="export as csv">Export as CSV</a>
và nếu bạn đang tìm kiếm kịch bản Mà có thể làm điều này:
$myArray = array();
$fp = fopen('export.csv', 'w');
foreach ($myArray as $line) {
fputcsv($fp, split(',', $line));
}
fclose($fp);
3
CSV = Comma Values Ly = Tách giá trị của bạn với dấu phẩy
bạn có để echo/in dòng kết quả của bạn theo dòng, được phân tách bằng dấu phẩy (,).
tôi giả sử $ query của bạn là tập hợp kết quả của truy vấn của bạn, đó là một mảng kết hợp:
while($query = mysql_fetch_assoc($rs)) {
// loop till the end of records
echo $query["field1"] . "," . $query["field2"] . "," . $query["field3"] . "\r\n";
}
nơi $ rs là handle tài nguyên.
Để cho phép trình duyệt bật lên một hộp tải về, bạn phải thiết lập các tiêu đề ở đầu file (giả định tên tập tin của bạn là export.csv):
header("Expires: 0");
header("Cache-control: private");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Description: File Transfer");
header("Content-Type: application/vnd.ms-excel");
header("Content-disposition: attachment; filename=export.csv");
Vậy là xong!
p.s. Phương thức này sẽ không để lại một tệp vật lý nào trong máy chủ. Nếu bạn dự định tạo một tệp trong máy chủ, hãy sử dụng các hàm fopen và fwrite truyền thống.
Sự kết hợp giữa ArneRie và câu trả lời của bạn hoạt động hoàn toàn tốt – Arc