【问题标题】:export Mysql table data to CSV with PHP on header without html code在没有 html 代码的情况下,使用 PHP 将 Mysql 表数据导出到 CSV
【发布时间】:2013-12-09 22:29:54
【问题描述】:

我正在尝试使用 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');
?>

如何只导出 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();

?>

【问题讨论】:

  • 之后代码似乎会打开您的 CSV 文件。您是否尝试下载 CSV 文件以检查它是否真的包含 HTML,或者它是从生成站点传递的。
  • 您必须在某处添加 html,而不是在上面的代码中。
  • 我可以下载 CSV 文件,但 CSV 文件包含 HTML 代码,我在导出 CSV 文件的同一 PHP 文件中拥有的代码
  • 我终于解决了!!!在这里我让脚本也许它可以帮助某人
  • @tao_can,我真的很惊讶只有你和我被 ob_end_clean() 难住了。哈哈哈。我给了你一个大拇指。

标签: php mysql csv


【解决方案1】:

至少,只需删除此代码:

// 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,即不要在内存中构建整个内容然后一次写入整个内容,而是一次写入一行文件。这使您的脚本的内存占用更小。

【讨论】:

    猜你喜欢
    • 2016-06-21
    • 2018-03-03
    • 1970-01-01
    • 1970-01-01
    • 2012-08-07
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 2010-12-19
    相关资源
    最近更新 更多