Чтение сериализованного файла, запись за записью

1

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

$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);

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

  • 0
    Что вы подразумеваете под record by record ? Вы уверены, что существует более одной record ?
  • 0
    Моя ошибка, я только что увидел, что код всегда перезаписывает файл ...
Теги:

2 ответа

1
Лучший ответ

Замените 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

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

<?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" не работают!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню