首页 > 解决方案 > file_put_contents 只写最后一行

问题描述

我正在尝试通过 file_put_contents() 将数据库表中的一些数据写入 gfg.txt 文件。通过复选框,我选择了更多事件,然后我需要将其中的一些信息保存到 gfg.txt 中,但只有最后一个事件保存到该文件中。因此,我尝试将 gfg.txt 打印到视频中,并且我正确获取了所有事件,但是如果我从服务器打开同一个文件,则只有一条记录,或者所选的最后一个事件。

如何将我需要的所有记录打印到 gfg.txt 文件中?谢谢

所以在文件中我有:

标题:ryjss,描述:brsrt,数据:2019-07-01

但在屏幕上我有:

标题:enr g,描述:有效,数据:2019-07-04

标题:ggfef,描述:veegert,数据:2019-07-06

标题:yriey,描述:tyjdh,数据:2019-03-01

标题:ryjss,描述:brsrt,数据:2019-07-01

该值来自 esporta.html.php:

<input type="checkbox" name="esportazione[]" value="<?="TITOLO: ".$evento['titolo_evento'].", DESCRIZIONE: ".$evento['desc_evento'].", DATA: ".$evento['data_evento'];?>"/>Seleziona<br/><br/>
<input type="submit" name="btn_export" value="Esporta"/>

在下面的 export_txt.php 中,我尝试将信息保存在 txt 文件中:

<?php
  if(isset($_POST["btn_export"]))  {

    if (!empty($_POST["esportazione"])) { 
?>

  <p><a href="gfg.txt">Download</a></p>

<?php
  foreach ($_POST["esportazione"] as $esportazione) {
        $file = 'gfg.txt';
        $current= $esportazione;
        file_put_contents($file, $current);

        echo "<pre>";
        echo htmlspecialchars(file_get_contents($file));
        echo "</pre>";

        }
    }
   }
?>

标签: php

解决方案


目前,您的foreach循环一次作用于 1 个项目,因此它将获取数据、覆盖文件然后显示内容。但是这个内容只是写的最后一行,因为你的显示在循环内。

由于您似乎只是希望将该数组中的所有值都放入文件中,因此您可以减少它以使用implode()(使用新行作为胶水)并一次性写入所有内容,因此无需foreach循环,只需...

  $file = 'gfg.txt';
  file_put_contents($file, implode(PHP_EOL, $_POST["esportazione"]));

然后检查它...

  echo "<pre>";
  echo htmlspecialchars(file_get_contents($file));
  echo "</pre>";

推荐阅读