当前位置: 首页 > 知识库问答 >
问题:

php导出sql数据到csv时为什么不保存为文件?

秦琦
2023-09-22

这段代码导出sql数据到csv文件,数据是出来了,显示在网页上,不保存成csv文件,请教一下什么原因?

if (isset($_POST['export'])) {    $sql = 'SELECT col1, col2, col3 FROM `sheet1`';    $result = $conn->query($sql);    if ($result === FALSE) {        echo "<p>Error fetching data: " . $conn->error . "</p>";    } elseif ($result->num_rows > 0) {        // create a file pointer connected to the output stream        $output = fopen('php://output', 'w');        // output the column headings        fputcsv($output, ['col1', 'col2', 'col3']);        // loop over the rows, outputting them        while ($row = $result->fetch_assoc())            fputcsv($output, $row);        // Output CSV-specific headers        header('Content-Type: text/csv; charset=utf-8');        header('Content-Disposition: attachment; filename=data.csv');        fclose($output);        exit;    } else {        echo "0 results";    }    $conn->close();}

共有1个答案

井镜
2023-09-22

确保在 PHP 代码中没有在 header() 函数调用之前输出了任何内容,包括空格、换行符、HTML 标签等。header() 函数需要在任何输出之前调用。
可以尝试使用 ob_clean() 函数清除输出缓冲区,以确保在输出 CSV 数据之前没有任何其他输出被发送到浏览器。

if ($result->num_rows > 0) {    // 清除输出缓冲区    ob_clean();    // 创建文件指针连接到输出流    $output = fopen('php://output', 'w');    // 输出列标题    fputcsv($output, ['col1', 'col2', 'col3']);    // 循环输出行数据    while ($row = $result->fetch_assoc()) {        fputcsv($output, $row);    }    // 输出 CSV 文件的头信息    header('Content-Type: text/csv; charset=utf-8');    header('Content-Disposition: attachment; filename=data.csv');    // 关闭文件指针    fclose($output);    exit;}
 类似资料:
  • 我试图转换到为一个PHP网站,不幸的是,我在localhost成功,但在测试服务器上失败了。 本地主机: php/5.3.29(brew安装php53)或PHP/5.6.8(xampp) Apache/2.4.16 测试服务器: PHP/5.6.14 nginx/1.6.0 它们连接到同一个mysql数据库(编码:utf8mb4,归类:utf8mb4_unicode_ci)。 数据表:(编码:ut

  • 问题内容: 假设我有一个数据库…。是否可以通过PHP将数据库中的内容导出到CSV文件(和文本文件,如果可能)? 问题答案: 我个人使用此功能从任何数组创建CSV内容。 然后,您可以使用户使用以下方式下载该文件: 用法示例:

  • 为什么我的值不能进入数据库? 如果需要更多的代码,请告诉我。 警告: 查询连接中的异常。php第713行:SQLSTATE[23000]:完整性约束冲突:1048列“name”不能为空(SQL:insert-into(,,,,)值(,,2016-06-19 21:44:05,2016-06-19 21:44:05)) 控制器: HTML页面:

  • 问题内容: 我需要将一些数据从mysql导出到csv文件。但是其中一列有换行符,我需要将数据导出到保存换行符的csv文件中。 目前,我正在使用以下sql查询: 但是该sql查询不会将换行符保存在csv文件中。我不是MySQL的专家,如果有人可以帮助我,我将不胜感激 问题答案: 您似乎正在遇到以下错误:https : //bugs.mysql.com/bug.php?id=40320自2008年以来

  • 问题内容: 我正在尝试重组在Excel文件中组织降水数据的方式。为此,我编写了以下代码: 这段代码运行良好,通过Jupyter,我可以看到结果是不错的 但是,尝试将此数据帧保存到csv文件时遇到问题。 结果文件包含垂直索引列,看来我无法调用特定的单元格。 (希望有人可以帮助我解决这个问题)非常感谢! 问题答案: 全部在文档中。 您有兴趣跳过索引列,因此: 如果您还想跳过标题,请添加: 我不知道您的

  • (希望有人能帮我解决这个问题)非常感谢!!