MySQL PHP导出到csv问题

时间:2019-07-08 09:02:05

标签: php mysql web phpmyadmin

我正在尝试使用PHP从网站将数据从MySQL导出到CSV。当用户单击生成报告时,它将自动创建报告,并将其作为文件下载到他们的计算机上。下面的代码一直在关注在线教程,但遇到了一些问题。当前,它将下载,但仅显示来自mySQL数据的带有一个日期值的一行。

我想知道如何显示csv文件中的所有数据,以及如何确保打印行的名称。 任何帮助都会很棒!

 @header("Content-Disposition: attachment; filename=record.csv");

 $select = "SELECT * FROM DBtable WHERE user_id=$id";
 $result2=$conn->query($select);
     while($row=$result2->fetch_assoc()){

      $data=$row['pain']."\n";
      $data=$row['sleep']."\n";
      $data=$row['mood']."\n";
      $data=$row['heartrate']."\n";
      $data=$row['time_of_entry']."\n";

    }

     echo $data;
     exit();

1 个答案:

答案 0 :(得分:0)

您应该回显

,而不是将$ row值设置为$ data。
 @header("Content-Disposition: attachment; filename=record.csv");

 $select = "SELECT * FROM DBtable WHERE user_id=$id";
 $result2=$conn->query($select);
     while($row=$result2->fetch_assoc()){

      echo $row['pain']."\n";
      echo $row['sleep']."\n";
      echo $row['mood']."\n";
      echo $row['heartrate']."\n";
      echo $row['time_of_entry']."\n";

    }
     exit();

您的代码只是将$ data设置为行值,而实际上并未对其执行任何操作。每行都会覆盖前一行,因此当您回显$ data时,您将回显它设置的最后一个值,在本例中,该值是最后一个循环的“进入时间”值。

至于添加“行名”,当前代码会先输入一个值,然后再换一行。您可能希望将“ \ n”替换为“,”,因此一个循环数据是一行,然后在关闭while循环之前,回显“ \ n”以插入新的行字符。然后,您可以使用相同的方式放置标题,使用回显和逗号分隔的标题,后跟换行符。

例如

echo $row['pain'].",";
echo $row['sleep'].",";
echo $row['mood'].",";
echo $row['heartrate'].",";
echo $row['time_of_entry'].",";
echo "\n";