Php fputs覆盖的第一行是csv

Php fputs覆盖的第一行是csv,php,fputs,Php,Fputs,这是我写入CSV的代码。我的问题是它覆盖了我的csv文件的顶行。有什么方法可以让你做得与众不同吗?我想将新数据添加到csv的开头,而不覆盖已经存在的任何内容 // Send Routine $filename="contact.csv"; $datfile=fopen($filename, 'r+'); spamcheck($EReply); $ESubject=$Subject; // $E

这是我写入CSV的代码。我的问题是它覆盖了我的csv文件的顶行。有什么方法可以让你做得与众不同吗?我想将新数据添加到csv的开头,而不覆盖已经存在的任何内容

    // Send Routine 
    $filename="contact.csv";
    $datfile=fopen($filename, 'r+');
            spamcheck($EReply);     
            $ESubject=$Subject;

//          $EMessage = $MsgHeader;
            $EMessage = "Form Submission:\r\n";
            for(reset($FormField); $key=key($FormField); next($FormField)) {
                spamcheck($FormField[$key]);
                $EMessage .= $key.": ".$FormField[$key];
//              $EMessage .= "<br><br>\r\n";
                $EMessage .= "\r\n";
                $datachunk="\"".$FormField[$key]."\",";
                fputs($datfile, $datachunk);
            }
    fputs($datfile, "\r\n");
    fclose($datfile);
//发送例程
$filename=“contact.csv”;
$datfile=fopen($filename,'r+');
spamcheck($EReply);
$ESubject=$Subject;
//$EMessage=$MsgHeader;
$EMessage=“表单提交:\r\n”;
for(重置($FormField);$key=key($FormField);next($FormField)){
spamcheck($FormField[$key]);
$EMessage.=$key.:“$FormField[$key];
//$EMessage.=“

\r\n”; $EMessage.=“\r\n”; $datachunk=“\”.$FormField[$key]。“\”,”; fputs($datfile,$datachunk); } fputs($datfile,“\r\n”); fclose($datfile);
为什么不应该
r+
=打开文件进行读/写,将文件指针移动到文件的开头。可能您想要一个+,它是附加的,例如移到文件的末尾。对不起,我不够清楚。我想通过在文件的开头而不是结尾添加一行来附加文件的开头。我的错。你不能一开始就“附加”。您必须启动一个新文件,写入新行,然后将旧文件的现有数据复制到新文件的末尾。不能像您所希望的那样“移动”文件中的数据。请注意,随着文件的增长,这会变得越来越低效。那没有任何意义。为什么它是这样工作的?fputs是一支铅笔。你把铅笔放在文件的开头,然后开始写。但是计算机不是一张纸,你可以随意滑动并剪切/粘贴。