Сохраняю в файл данные из формы:

$name = $_POST['name'];
$url = $_POST['url'];
$comm = $_POST['comm'];

$data["name"]=$name;
$data["url"]=$url;
$data["comm"]=$comm;

file_put_contents("db.txt", serialize($data)); 

Теперь я хотел бы прочитать эту файловую запись по записи.

 $file_handle = fopen("db.txt", "r");
    while (!feof($file_handle)) {

        $line = fgets($file_handle);
        $arr = unserialize($line);

        var_dump($arr);
    }
    fclose($file_handle);

Но этот код читает только последнюю запись. Как прочитать весь файл?

php
1
lukassz 5 Янв 2016 в 11:45

2 ответа

Лучший ответ

Заменить file_put_contents("db.txt", serialize($data)); на

file_put_contents("db.txt",  PHP_EOL .serialize($data), FILE_APPEND);

File_put_contents ("db.txt", serialize ($ data)); // перезапишет файл снова и снова. поэтому вы не можете прочитать все данные. FILE_APPEND помогает добавлять данные, а PHP_EOL помогает оставить разрыв строки.

1
Vigneswaran S 5 Янв 2016 в 09:25

Привет, я пробую этот код для вашего решения:

<?php
    $name = "rdn";
    $url = "http://google.it";
    $comm = "com";

    $data["name"]=$name;
    $data["url"]=$url;
    $data["comm"]=$comm;

file_put_contents("db.txt", serialize($data)."\n",FILE_APPEND); 

$fh = fopen('db.txt','r');
while ($line = fgets($fh)) {


  // <... Do your work with the line ...>
   var_dump(unserialize($line));
}
fclose($fh);


?>

Без "\ n" не работают!

1
rdn87 5 Янв 2016 в 09:51