读取序列化文件,按记录记录

时间:2016-01-05 08:45:01

标签: php

我保存到表单中的文件数据:

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

但是这段代码只读了最后一条记录。如何阅读所有文件?

2 个答案:

答案 0 :(得分: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 :(得分: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);


?>

没有&#34; \ n&#34; 不能工作!