【问题标题】:Insert form data into the csv file line by line in php在php中将表单数据逐行插入到csv文件中
【发布时间】:2023-03-28 20:51:02
【问题描述】:

我正在尝试将表单数据插入到 csv 文件中,即逐行但问题是一个接一个地附加数据,但数据插入到 csv 文件的同一行中。

这是 HTML 表单:

<!DOCTYPE>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>

<body>
    <form id="form1" name="form1" method="post" action="insert.php">
    <table border=1>
        <tr>
            <td width="30"><span>First Name</span></td>
            <td width="30"><input type="text" name="fn" id="fn" /></td>
        </tr>
        <tr>
            <td width="30"><span>Last Name</span></td>
            <td colspan="3"><input name="ln" type="text" id="ln" size="50" /></td>
        </tr>
        <tr>
            <td width="71">Address</td>
            <td width="10"><input class="" name="address" type="text" id="address" size="100" /></td>
        </tr>
        <tr><td></td>
            <div align="center">
            <td><input type="submit" name="Submit" id="Submit" value="Submit" />
            <input type="reset" name="Reset" id="button" value="Reset" />
            </td>
            </div>
        </tr>
    </table>
    </form>
</body>
</html>

这是php程序:

<?php

$first=$_POST["fn"];
$last=$_POST["ln"];
$address=$_POST["address"];

echo "$first <br> $last <br> $address";

if(!empty($first) || !empty($last) || !empty($address)){

$cvsData = $first . "," . $last . "," . $address ;

$fp = fopen("formdata.csv","a"); // $fp is now the file pointer to file $filename

    if($fp)
    {
        fwrite($fp,$cvsData)"; // Write information to the file
        fclose($fp); // Close the file
    } 
}
?>

我第一次插入详细信息:abcd、efgh、ijkl 当我第二次插入详细信息时:abcd,efgh,ijkl

问题出在 csv 文件中,第一行不包括,第二次我插入数据 附加在同一行。如下图所示:请查找。

附加新文件: 我添加时它没有更新: fwrite($fp,$cvsData . "\n "); 请找到快照:

【问题讨论】:

标签: php html forms csv


【解决方案1】:

您缺少换行符。你想要:

fwrite($fp,$cvsData."\n")

【讨论】:

  • 无法在新行中插入数据
  • 并且它还显示警告消息:警告:fopen(formdata.csv)[function.fopen]:无法打开流:C:\PORTAL\xampp\htdocs\get_insert_csv\ 中的权限被拒绝第 13 行的 insert.php
  • 是的,对不起,我的错误文件已经打开,我正在尝试再次打开,这就是它显示错误的原因。现在请告诉我第一行排除了为什么?
  • “\n”是一个“换行符”(也称为换行符或 LF),它告诉计算机从下一行开始写入。但是,它特别是 unix 换行符 - windows 和 mac 也可能使用回车符(CR 或“\r”)。总结:老的mac用“\r”,linux用“\n”,windows用“\r\n”。
  • 是的,我正在使用 Windows,当我添加时它工作正常: fwrite($fp,$cvsData . "\r\n");谢谢@Benubird
【解决方案2】:

这对我有用:

if(!empty($first) || !empty($last) || !empty($address)){

$cvsData = $first . "," . $last . "," . $address  . "\n"; // Add newline

$fp = fopen("formdata.csv","a"); // $fp is now the file pointer to file $filename

    if($fp)
    {
        fwrite($fp,$cvsData); // Write information to the file
        fclose($fp); // Close the file
    }
}

另外,fwrite($fp,$cvsData)"; // Write information to the file 处有语法错误

应该是fwrite($fp,$cvsData); // Write information to the file

【讨论】:

  • 是的,我做到了,但第一行仅在新行中排除和插入数据
【解决方案3】:

$cvsData中添加\n

$cvsData = "\n" . $first . "," . $last . "," . $address ;

【讨论】:

    猜你喜欢
    • 2018-10-19
    • 1970-01-01
    • 2020-02-23
    • 1970-01-01
    • 1970-01-01
    • 2017-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多