PHP没有将MySQL写入CSV

时间:2018-01-30 05:29:53

标签: php mysql csv

我试图让我的网页上显示的mysql数据库在点击按钮时导出到csv,但是它没有按预期运行。我试图在单击导出按钮时执行以下操作,但是当您单击“导出CSV”按钮时,它将转到“url / export.php”页面,并显示“错误页面不存在的网页”

导出按钮定义:

     <div class="topnav">
<form method="post" action="export.php">
  <input type="submit" name="export" value="CSV Export" class="btn btn-i"
  <a class="active" href="#export">Export to CSV</a>
</form>
  <div class="search-container">
    <form action="/action_page.php">
      <input type="text" placeholder="Search.." name="search">
      <button type="submit"><i class="fa fa-search"></i></button>
    </form>
  </div>
</div>

export.php代码:

    <?php
//export.php
if(isset($_POST["export"])) {
    $connect = mysqli_connect("localhost", "root", "password", "dbName");
    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename=data.csv');
    $output = fopen("php://output", "w");
    fputcsv($output, array('Username', 'Password', 'PhysicianID'));
    $query = "SELECT * FROM Users";
    $result = mysql_query($connect, $query);
    while($row = mysqli_fetch_assoc($result)) {
        fputcsv($output, $row);
    }
    fclose($output);
} 
?>

1 个答案:

答案 0 :(得分:1)

您从根本上误解了服务器端和客户端代码的交互方式。

PHP脚本只输出它遇到的所有内容,直到遇到PHP开始标记(<?php)。然后代码被解释为PHP。处理完成后,可能会产生更多输出。在关闭PHP标记(?>)之后,事情再次输出(受流控制结构等)。

PHP不知道Javascript是什么,反之亦然。

您的PHP脚本在请求页面时运行。它输出一个HTML <script>标签和一些Javascript。在生成此HTML的同时,<?php分隔符中的所有代码都在服务器上运行。不在点击事件上 - 就在生成页面时。

如果您希望服务器端代码运行以响应客户端事件,则需要向服务器端脚本发出请求(通过Javascript或通过新页面提取)。该脚本是此数据库访问代码的位置。

例如,该按钮可能位于HTML页面上,如下所示:

<form action="get-csv.php" method="POST">
    <button class="active">Export to CSV</button>
</form>

这可以在纯HTML页面上,也可以由另一个PHP脚本输出。

现在将您的代码放在get-csv.php中的数据库中导出数据。