将Mysql表数据导出为CSV,头上使用PHP,无需html代码


export Mysql table data to CSV with PHP on header without html code

我正试图用PHP将一些数据从Mysql导出到.CSV文件

问题是脚本导出.CSV文件,但在选项卡之前的.CSV文件中有HTML代码

这里有脚本

// Get all fields names in table "mytablename" in database "pendejas".
$fields = mysql_list_fields(pendejas,$table_name);
// Count the table fields and put the value into $columns.
$columns = mysql_num_fields($fields);
// Put the name of all fields to $out.
for ($i = 0; $i < $columns; $i++) {
$l=mysql_field_name($fields, $i);
$out .= '"'.$l.'",';
}
$out .="'n";
// Add all values in the table to $out.
while ($l = mysql_fetch_array($result)) {
for ($i = 0; $i < $columns; $i++) {
$out .='"'.$l["$i"].'",';
}
$out .="'n";
}
// Open file export.csv.
$f = fopen ('export.csv','w');
// Put all values from $out to export.csv.
fputs($f, $out);
fclose($f);
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename=$table_name.csv');
readfile('$table_name.csv');
?>

如何导出ONLY Mysql表包含的内容?

感谢您的帮助

编辑:已解决!

这里有脚本

<?php
$result = mysql_query("SELECT  name, time FROM $table_name");
ob_end_clean();
if ($result) {
    while ($row = mysql_fetch_array($result)) {
        $pasajeros .= $row["name"] . ";". $row["time"]. "'r'n"; //note the comma here
    }
}
$filename = "pasajeros_" . date("Y-m-d_H-i"); 
header("Content-type: application/vnd.ms-excel");
header("Content-disposition: csv" . date("Y-m-d") . ".csv");
header("Content-disposition: filename=" . $table_name . ".csv");
print $pasajeros;
exit();
?>

至少,只需删除以下代码:

// Count the table fields and put the value into $columns.
$columns = mysql_num_fields($fields);
// Put the name of all fields to $out.
for ($i = 0; $i < $columns; $i++) {
$l=mysql_field_name($fields, $i);
$out .= '"'.$l.'",';
}
$out .="'n";

作为一个额外的建议,您可以查看fputcsv,使构建CSV文件的过程不那么手动。这也将帮助您以正确的方式构建CSV,即不要在内存中构建整个内容,然后一次写入整个内容,而是一次写入一行文件。这使得脚本的内存占用空间要小得多。