php无法写新行,文件被覆盖

时间:2013-09-06 19:52:50

标签: php fopen

我已经阅读了很多问题,其中没有一个有效。我有一个txt文件。第一行包含由选项卡“\ n”分隔的标题。现在,当我发布到这个文件时,我希望它获取值并通过选项卡将它们分开,然后将它们写在txt文件的新行上。但是当我运行它时,它只会覆盖第一行。

<?php
$post = $_POST;
$myFile = 'test.txt';
$fh = fopen($myFile, 'w');
$columns = "";
foreach ($post as $key => $value){

    $columns .= $value . "\t"; 

}
fwrite($fh, $columns . PHP_EOL);
fclose($fh);
?>

3 个答案:

答案 0 :(得分:1)

您正在寻找a而不是w

$fh = fopen($myFile, 'a');

来自the docs

  

'w'仅供写作; 将文件指针放在开头   该文件并将文件截断为零长度。如果文件没有   存在,试图创造它。

     

'a'仅供写作; 将文件指针放在。的末尾   文件。如果该文件不存在,请尝试创建它。

答案 1 :(得分:0)

如果您不想覆盖内容,请尝试$fh = fopen($myFile, 'a');

使用w覆盖,aa+追加。

有关fwrite()功能的更多信息,请参阅PHP手册。

另请参阅fopen() http://php.net/manual/en/function.fopen.php

上的PHP手册

'a'仅限写作;将文件指针放在文件的末尾。如果该文件不存在,请尝试创建它。

'a+'开放阅读和写作;将文件指针放在文件的末尾。如果该文件不存在,请尝试创建它。

答案 2 :(得分:0)

w用于写入,这意味着任何事情都会被覆盖。

更改以下行:

$fh = fopen($myFile, 'w'); //w = write

$fh = fopen($myFile, 'a'); //a = append

它应该为你解决问题。