Writing a new and appending a file in PHP without erasing contents

61
May 27, 2022, at 10:50 PM

How could one write a new line to a file in php without erasing all the other contents of the file?

<?php
if(isset($_POST['songName'])){
        $newLine = "\n";
        $songName = $_POST['songName'];
        $filename = fopen('song_name.txt', "wb");
        fwrite($filename, $songName.$newLine);
        fclose($filename);
    };
?>

This is what the file looks like Current view

This is what is should look like Ideal View

Answer 1

Simply:

file_put_contents($filename,$songName.$newLine,FILE_APPEND);

Takes care of opening, writing to, and closing the file. It will even create the file if needed! (see docs)

If your new lines aren't working, the issue is with your $newLine variable, not the file append operations. One of the following will work:

$newLine = PHP_EOL;  << or >>  $newLine = "\r\n";
Answer 2

You have it set for writing with the option w which erases the data.

You need to "append" the data like this:

$filename = fopen('song_name.txt', "a");

For a complete explanation of what all options do, read here.

Answer 3

To add a new line to a file and append it, do the following

$songName = $_POST['songName'];
        $filename = fopen('song_name.txt', "a+");
        fwrite($filename, $songName.PHP_EOL);
        fclose($filename);

PHP_EOL will add a new line to the file

READ ALSO
Add proc_open $pipe inputs on the go dynamically

Add proc_open $pipe inputs on the go dynamically

I am trying to create a C program compiler + executer using PHP

53
Drupal 8 Entity Query - Condition for an unlimited fields

Drupal 8 Entity Query - Condition for an unlimited fields

With Drupal QueryInterface, it's possible to add a condition on the delta itself by using '%delta' like this :

58