PHP Почему импортированный CSV-файл только вставить первую строку CSV в SQL

0

Скажем, у меня есть 3 строки в CSV файле с 3-мя столбцами. В этом случае мне нужно импортировать тот же самый файл в 3 раза, чтобы все мои данные в CSV файле были полностью вставлены в мою базу данных SQL. Я думал, что !feof($file) должен убедиться, что цикл завершен в конец файла?

if (isset($_POST['submitI'])){
$filename = $_FILES["file"]["tmp_name"];

if ($_FILES["file"]["size"] > 0){
    $file = fopen($filename, "r");

    while (!feof($file)){
        $getData = fgetcsv($file, '0');

        $sql = "SELECT * FROM murid WHERE No_Sek_Murid = '".$getData[0]."'";
        $result = mysqli_query($conn, $sql);

        if(empty($getData[0] || $getData[1] || $getData[2])){
            $errorForm = "Sila isikan semua medan dalam fail!";
            echo "<script type='text/javascript'>alert('$errorForm');</script>";
            echo "<script> location.href='../main.php'; </script>";
            exit();
        }

        if(mysqli_num_rows($result) === 0){
            $sqlMurid = "INSERT INTO murid (No_Sek_Murid, Nama_Murid, Kelas_Murid) VALUES ('".$getData[0]."', '".$getData[1]."', '".$getData[2]."')";
            $sqlKelab = "INSERT INTO kelab (Kod_Kelab, No_Sek_Murid, ID_Pengguna) VALUES ('{$_SESSION['kodKelab']}', '".$getData[0]."', '{$_SESSION['username']}')";
            mysqli_query($conn, $sqlMurid);
            mysqli_query($conn, $sqlKelab);

            $success = "Berjaya menambah rekod ke dalam pangkalan data!";
            echo "<script type='text/javascript'>alert('$success');</script>";
            echo "<script> location.href='../main.php'; </script>";
            exit();
        }

    } fclose($file);

} else {
    $errorfile = "Operasi import gagal!";
    echo "<script type='text/javascript'>alert('$errorfile');</script>";
    echo "<script> location.href='../main.php'; </script>";
    exit(); 
}

}

  • 3
    Удалить выход (); из вашего четвертого, если заявление ..
  • 0
    Также кажется, что мы хотели бы выполнить чтение из файла до начала цикла while и другое чтение в самом конце цикла, прежде чем мы вернемся к условному тесту (в то while ).
Показать ещё 1 комментарий
Теги:

1 ответ

0
Лучший ответ

Не используйте exit() без необходимости. Также вы передали несколько параметров функции empty(), которая кажется неправильной. Вы можете запустить свой код без функции выхода, как показано ниже:

if (isset($_POST['submitI'])){
$filename = $_FILES["file"]["tmp_name"];

if ($_FILES["file"]["size"] > 0){
    $file = fopen($filename, "r");

    while (!feof($file)){
        $getData = fgetcsv($file, '0');

        $sql = "SELECT * FROM murid WHERE No_Sek_Murid = '".$getData[0]."'";
        $result = mysqli_query($conn, $sql);

        if(empty($getData[0]) || empty($getData[1]) || empty($getData[2])){
            $errorForm = "Sila isikan semua medan dalam fail!";
            echo "<script type='text/javascript'>alert('$errorForm');</script>";
            echo "<script> location.href='../main.php'; </script>";
        } elseif(mysqli_num_rows($result) === 0){
            $sqlMurid = "INSERT INTO murid (No_Sek_Murid, Nama_Murid, Kelas_Murid) VALUES ('".$getData[0]."', '".$getData[1]."', '".$getData[2]."')";
            $sqlKelab = "INSERT INTO kelab (Kod_Kelab, No_Sek_Murid, ID_Pengguna) VALUES ('{$_SESSION['kodKelab']}', '".$getData[0]."', '{$_SESSION['username']}')";
            mysqli_query($conn, $sqlMurid);
            mysqli_query($conn, $sqlKelab);

            $success = "Berjaya menambah rekod ke dalam pangkalan data!";
            echo "<script type='text/javascript'>alert('$success');</script>";
            echo "<script> location.href='../main.php'; </script>";
        }

    } fclose($file);

} else {
    $errorfile = "Operasi import gagal!";
    echo "<script type='text/javascript'>alert('$errorfile');</script>";
    echo "<script> location.href='../main.php'; </script>";
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню