PHP 当用户注册时,如何将他们的详细信息添加到现有 CSV 文件的末尾


PHP When a user registers, How do I add their details to the end of an existing CSV file?

我正在为我的学校计算项目创建一个网站。由于学校无法使用mySQL或SQLite,我不得不使用CSV文件。

我的问题是我已经创建了一个CSV文件,其中包含我手动输入的值进行测试,我希望能够将用户输入的详细信息添加到同一CSV文件的末尾。

用户.csv:

ID,Username,Email,DateOfBirth,Password,UserScore
1,Test,Test@Test.com,01/01/2000,Test,10
2,Alfie,Alfie@gmail.com,22/02/1000,1234,0

当前 PHP 代码:

<?php
session_start();
    if(isset($_POST['submit'])) {
        $submittype = $_POST['submit'];     
        if($submittype == "register" && (empty($_POST['username']) || empty($_POST['email']) || empty($_POST['dateOfBirth']) || empty($_POST['password']) || empty($_POST['confirmPassword']))) {
            die("ERROR|Please fill out all of the fields.");
        } else {
            $userID = 0; //TODO: Increment
            $username = $_POST['username'];
            $email = $_POST['email'];
            $password = $_POST['password'];
            $dateOfBirth = $_POST['dateOfBirth'];
            $confirmPassword = $_POST['confirmPassword'];
            $userScore = 0;
            $data = $userID.",".$username.",".$email.",".$dateOfBirth.",".$password.",".$userScore;
            $file = fopen('Users.csv','a');
            fputcsv($file, $data);
            fclose($file);
        }
    }
?>

当你使用fputcsv时,你需要使用array而不是string。我还用这一行递增了$userId$userId = count(file($file));它将文件行读取到数组中,对其进行计数,因此它将始终递增。

我还对您的代码进行了一些改进,清除了未使用的变量。你可以直接使用$_POST["anything"],你不需要创建另一个变量,你不操作什么。

检查这个。

<?php
session_start();
if (isset($_POST['submit'])) {
    $submittype = $_POST['submit'];
    if ($submittype == "register" && (empty($_POST['username']) || empty($_POST['email']) || empty($_POST['dateOfBirth']) || empty($_POST['password']) || empty($_POST['confirmPassword']))) {
        die("ERROR|Please fill out all of the fields.");
    } else {
        $file = 'Users.csv';
        $userId = count(file($file)); 
        //$userID = 0; //TODO: Increment
        $userScore = 0;
        $data = array($userId, $_POST["username"], $_POST["email"], $_POST["password"], $_POST["dateOfBirth"], $_POST["confirmPassword"], 0);
        $fh = fopen($file, 'a');
        fputcsv($fh, $data, ",");
        fclose($fh);
    }
}

还有另一种方法,检查MBaas的答案。

替换

   $file = fopen('Users.csv','a');
    fputcsv($file, $data);
    fclose($file);

有了这个:

file_put_contents('Users.csv' , $data . "'n", FILE_APPEND);