遇到PHP错误严重性:警告消息:fwrite():39不是有效的流资源

时间:2017-02-14 05:53:24

标签: php codeigniter filesystems

下面是我尝试将数据库中的结果写入文本文件的代码。但我一直收到上面的错误信息。我想这与语法有关,但我无法解决它。请与您分享如何弄明白。

     public function createfile(){

        $myfile = fopen("newfile.txt", "w") or die("Unable to open file!");

        $this->db->select('*');
        $this->db->from('crd_article_desc');
        $query = $this->db->get();
        $result=$query->result_array();         

    $txt ='';
    $counter = 1;                       
    foreach($result as $results){

    $vp_string = trim($results['article_title']);

    $vp_string = html_entity_decode($vp_string);

    $vp_string = strip_tags($vp_string);

    $vp_string = strtolower($vp_string);

    $vp_string = preg_replace('~[^ a-z0-9_.]~', ' ', $vp_string);

    $vp_string = preg_replace('~ ~', '-', $vp_string);

    $vp_string = preg_replace('~-+~', '-', $vp_string);

    $new_friendly_url = $vp_string; 
    echo $results['article_title'];
    $looptxt = $results['article_id']."-".$new_friendly_url."\n";

    $txt=$txt.$looptxt;

    fwrite($myfile,$txt);
    fclose($myfile);
}

1 个答案:

答案 0 :(得分:0)

如果我错了,请在我的代码中纠正我

foreach($result as $results){

    [...]
    $txt=$txt.$looptxt;

    fwrite($myfile,$txt);
    fclose($myfile);
}

在我看来好像你在循环中关闭文件。在循环的第二次迭代中,您试图写入刚刚关闭的文件,当然 - 它会失败。

我认为要解决此问题,您必须在fwrite

之前关闭循环
foreach($result as $results){

    [...]
    $txt=$txt.$looptxt;
    }

    fwrite($myfile,$txt);
    fclose($myfile);
}