Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 逐条记录读取序列化文件_Php - Fatal编程技术网

Php 逐条记录读取序列化文件

Php 逐条记录读取序列化文件,php,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"

我从表单保存到文件数据:

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

但此代码只读取最后一条记录。如何读取所有文件

替换
文件内容(“db.txt”,序列化($data))

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

文件内容(“db.txt”,序列化($data));//将一次又一次地重写该文件。所以你不能读取所有的数据。FILE\u APPEND有助于附加数据,PHP\u EOL有助于保留换行符。

您好,我为您的解决方案尝试以下代码:

<?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”就不能工作

你所说的一条记录一条记录是什么意思?你确定有不止一条
记录
?我的错误,我只是看到代码总是覆盖文件。。。