Php 何时将csv文件导入数据库行被洗牌?

Php 何时将csv文件导入数据库行被洗牌?,php,mysql,csv,fgetcsv,Php,Mysql,Csv,Fgetcsv,当我将csv文件导入数据库时,行被洗牌。请参考图片 我需要导入而不洗牌行。我正在寻找一个多星期的解决办法。我无法解决这个问题 你能帮助任何人解决这个问题吗 <?php include 'connection1.php'; $target_dir = dirname(__FILE__) . "/upload/"; if (isset($_POST["import"]) && !empty(

当我将csv文件导入数据库时,行被洗牌。请参考图片

我需要导入而不洗牌行。我正在寻找一个多星期的解决办法。我无法解决这个问题

你能帮助任何人解决这个问题吗

<?php
    include 'connection1.php';                               
    $target_dir = dirname(__FILE__) . "/upload/";
    if (isset($_POST["import"]) && !empty($_FILES)) {
         $testid =$_POST['testidno'];
        $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
        $fileType = pathinfo($target_file, PATHINFO_EXTENSION);

        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {


            if (($getdata = fopen($target_file, "r")) !== FALSE) {
                fgetcsv($getdata);
                while (($data = fgetcsv($getdata)) !== FALSE) {
                    $fieldCount = count($data);
                    for ($c = 0; $c < $fieldCount; $c++) {
                        $columnData[$c] = $data[$c];
                    }
                    $subtopicid = mysqli_real_escape_string($con, $columnData[0]);
                    $subtopic = mysqli_real_escape_string($con, $columnData[1]);
                    $question = mysqli_real_escape_string($con, $columnData[2]);
                    $img_question = mysqli_real_escape_string($con, $columnData[3]);
                    $sub_question = mysqli_real_escape_string($con, $columnData[4]);                                                
                    $answer1 = mysqli_real_escape_string($con, $columnData[5]);
                    $answer2 = mysqli_real_escape_string($con, $columnData[6]);
                    $answer3 = mysqli_real_escape_string($con, $columnData[7]);
                    $answer4 = mysqli_real_escape_string($con, $columnData[8]);
                    $answer5 = mysqli_real_escape_string($con, $columnData[9]);
                    $correctanswer = mysqli_real_escape_string($con, $columnData[10]);
                    $solution = mysqli_real_escape_string($con, $columnData[11]);                                               
                    $setQ = mysqli_real_escape_string($con, $columnData[12]);
                    $topicname = mysqli_real_escape_string($con, $columnData[13]);
                    $import_data[] = "('" . $subtopicid . "','" . $subtopic . "','" . $testid . "','" . $_GET['id'] . "',
                                       '" . $question . "','" . $img_question . "','" . $sub_question . "', 
                                       '" . $answer1 . "','" . $answer2 . "','" . $answer3 . "','" . $answer4 . "', 
                                       '" . $answer5 . "','" . $correctanswer . "','" . $solution . "',
                                       '" . $setQ . "','" . $topicname . "')";



// SQL Query to insert data into DataBase
                }
                $import_data = implode(",", $import_data);                                  
                $query = "INSERT INTO advanced_questions (subtopicid,subtopic,testid,courseid,
                          question,img_question,sub_question,answer1,answer2,answer3,answer4,answer5,correctanswer, 
                          solution,setQ,topicname) VALUES  $import_data "; 

                $result = mysqli_query($con, $query);                            
                fclose($getdata);
            }
        }
    }
?>

两条注释:首先,数据库表的记录没有内部顺序。唯一存在的顺序是您在执行
按排序时强加的顺序。其次,您可能应该将问题编号拆分为自己的列,以便在查询时可以轻松地对记录进行排序。我将问题和问题编号串联起来,仅用于理解目的。那么只有我们才能追踪它是否被洗牌了。@Tim BiegeleisenYou没有抓住重点;这些记录总是在数据库中被“洗牌”。只有当您使用
Order BY
查询并提供该订单时,订单才存在。请遵循Tims注释-如果您的表中
Order BY ID
,您将看到它们“顺序正确”。查看您的图像,对照您所谈论的字段检查ID!非常感谢你的建议!!它现在工作得很好@TimBiegeleisen,