使用fwrite和file_put_contents写入文本文件时出错

时间:2013-01-20 09:08:27

标签: php

我很擅长使用fwrite和file_put_contents,并且在for循环语句的每一行都遇到错误:

Warning: file_put_contents() expects parameter 1 to be string,

Warning: fwrite(): 3 is not a valid stream resource in...

这是代码:

  

$ databank =“data.txt”; $ access = fopen($ databank,'w')或die(“cant   打开文件“); fclose($ access);

$row = "$ent1".' | '."$ent2".' | '."$perc1a".'% | '."$perc1a_frac".'% | '."$frac1a".' | '."$perc2a".'% | '."$perc2a_frac".'%  | '."$frac2a".' | +'."$a".' | '."$new_ent1".' | '."$perc1b".'% | '."$perc1b_frac".'% | '."$frac1b".' | '."$perc2b".'% | '."$perc2b_frac".'% | '."$frac2b".' \n';
            fwrite($access, $row);
            //file_put_contents($access,$row);

我预感到与字符串相关的问题。任何指针都非常感激。

4 个答案:

答案 0 :(得分:1)

#1。错误:

  

警告:file_put_contents()期望参数1为字符串

documentation中,它表示第一个参数为string $filename,并对其进行了解释:Path to the file where to write the data.

使用示例:

$file = 'people.txt';
$current = "John Smith\n";
file_put_contents($file, $current);

#2。错误:

  

警告:fwrite():3不是......

中的有效流资源

同样,在documentation中,它表示第一个参数是resource $handle,而wxplanation是:A file system pointer resource that is typically created using fopen().

使用示例:

$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);

答案 1 :(得分:1)

使用file_put_contents(),你应该有以下内容:

$access - 应该是一个文件名,因为根据你的问题,你在循环中使用它,所以你应该使用FILE_APPEND来附加新内容,如:

$access = "some_filename.txt";
file_put_contents($access, $yourDataHere, FILE_APPEND | LOCK_EX);
//LOCK_EX prevents anyone else writing to the file at the same time

更好,请阅读您要使用的功能的文档。

答案 2 :(得分:0)

在使用某些功能之前,阅读手册是非常好的做法。我自己总是遵循它,没有例外。

说,从file_put_contents开始,你可以学到两件事:

  1. $access应为文件名
  2. 使其在循环中写入多行,必须使用特殊标志或不断用最后一行覆盖文件

答案 3 :(得分:0)

我实际上忽视了

fclose($access);

我把它放在fwrite()之后应该在之后。一切都还好。