如何使用file_put_contents()将数据写入文件而不覆盖它?

时间:2013-11-07 21:27:06

标签: php

我要创建一个包含名称列表的txt文件,这些名称来自表单。

我的逻辑如下:

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    $name = $_POST['username'];
}


function add_name($name, $file_name = "names.txt") {
    if(file_exists($file_name)) {
        $name = $name;
        file_put_contents($file_name, $name);
} else { 
         $handle = fopen($file_name, 'w+');
         fwrite($handle, $name);
         fclose($handle);
    }
}

现在的问题是,它写了名字,但是当我设置另一条记录时,它会删除之前的任何帮助吗?也许file_put_contents不适合使用?

1 个答案:

答案 0 :(得分:7)

如果文件已存在,默认情况下file_put_contents()将覆盖现有文件。

要防止覆盖当前文件,请将FILE_APPEND标志作为函数的第三个参数传递。

例如:

if (file_exists($file_name)) {
    file_put_contents($file_name, $some_value, FILE_APPEND);
} else { 
    //...
}