php - 通过 php..html 将 mysql 表数据导出到 csv 文件也被转储

标签 php mysql csv mysqli

所以我试图通过 php 将 mysql 表导出到 csv 文件。这是代码

<?php if (isset($_POST['exp'])) {

    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename=data.csv');

    $output = fopen('php://output', 'w');

    fputcsv($output, array('User ID', 'User Name', 'Password'));
    $con = mysqli_connect('localhost', 'root', 'pass', 'xyz');
    $rows = mysqli_query($con, 'SELECT * FROM users');

    while ($row = mysqli_fetch_assoc($rows)) {
      fputcsv($output, $row);
    }
    fclose($output);
    mysqli_close($con);
  }
?>

<div>
  <form action="#" method="post">
    <input type="submit" value="Export" name="exp" />
  </form>
</div>

一切都很好,但 html 部分也被转储到 csv 文件中。这是 csv 的屏幕截图 csv output

为什么会这样?我做错了什么吗?

最佳答案

您的页面在 PHP 之外继续加载。在 IF 语句的末尾添加 exit(),它将立即停止运行。

<?php if (isset($_POST['exp'])) {

    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename=data.csv');

    $output = fopen('php://output', 'w');

    fputcsv($output, array('User ID', 'User Name', 'Password'));
    $con = mysqli_connect('localhost', 'root', 'pass', 'xyz');
    $rows = mysqli_query($con, 'SELECT * FROM users');

    while ($row = mysqli_fetch_assoc($rows)) {
      fputcsv($output, $row);
    }
    fclose($output);
    mysqli_close($con);
    exit();
  }
?>

<div>
  <form action="#" method="post">
    <input type="submit" value="Export" name="exp" />
  </form>
</div>

关于php - 通过 php..html 将 mysql 表数据导出到 csv 文件也被转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26593578/

相关文章:

mysql 匹配/反对语法

python - 将不同长度的数组列表保存到csv

.net - 是否可以从Thread.CurrentThread.CurrentCulture获取CSV分隔符? (。净)

regex - 使用正则表达式删除 CSV 文件中引号之间的多个逗号

javascript - PHP登录脚本重定向在登录后不起作用

java - 如何避免所有列 hibernate 时的 saveOrUpdate

php - 故意使用未定义的常量

php - curl 错误 : unable to set private key file: 'test.pem' type PEM

php - PHP 或 LIghttpd 是否创建 fastcgi 套接字?

php - Eloquent 查询 AND OR