使用PHP导入csv文件,它说itis导入但尚未导入

时间:2019-01-16 14:42:36

标签: php csv import

我正在测试它,是的,它让我选择了一个文件,并说我“已成功导入”该文件 但是当我查看数据库时,它没有导入... ................................................... ................................................... ................................................... ................................................... ................................................... ................................................... ....................................

这是我的function.php         

             if(isset($_POST["Import"])){
                $servername = "localhost";
            $username = "root";
            $password = "";
            $db = "lcho_login";

            try {

                $conn = mysqli_connect($servername, $username, $password, $db);
                  if($_FILES["file"]["size"] > 0)
                     {
                        $file = fopen($filename, "r");
                        while (($getData = fgetcsv($file, 10000, ",")) !== FALSE)
                         {


                           $sql = "INSERT into lcho_dengue_activities (district_id,barangay_id,month,year,dengue_ind1,dengue_ind2,dengue_ind3,dengue_ind4,dengue_ind5,dengue_ind6,dengue_ind7,dengue_ind8,dengue_ind9,dengue_ind10,dengue_ind11) 
                               values ('".$getData[0]."','".$getData[1]."','".$getData[2]."','".$getData[3]."','".$getData[4]."','".$getData[5]."','".$getData[6]."','".$getData[7]."','".$getData[8]."','".$getData[9]."','".$getData[10]."')";
                               echo "yes";
                               $result = mysqli_query($conn, $sql);
                            if(!isset($result))
                            {
                                echo "<script type=\"text/javascript\">
                                        alert(\"Invalid File:Please Upload CSV File.\");
                                        window.location = \"imports.php\"
                                      </script>";       
                            }
                            else {
                                  echo "<script type=\"text/javascript\">
                                    alert(\"CSV File has been successfully Imported.\");
                                    window.location = \"imports.php\"
                                </script>";
                            }
                         }

                         fclose($file); 
                     }
                }
            catch(exception $e)
                {
                echo "Connection failed: " . $e->getMessage();
                }
                return $conn;   

                    $filename=$_FILES["file"]["tmp_name"];      



                }    


             ?>

这是我的imports.php

            <!DOCTYPE html>
            <html lang="en">

            <head>
                <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" crossorigin="anonymous">
                <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" crossorigin="anonymous">
                <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" crossorigin="anonymous"></script>

            </head>

            <body>
                <div id="wrap">
                    <div class="container">
                        <div class="row">

                            <form class="form-horizontal" action="functions.php" method="post" name="upload_excel" enctype="multipart/form-data">
                                <fieldset>

                                    <!-- Form Name -->
                                    <legend>Form Name</legend>

                                    <!-- File Button -->
                                    <div class="form-group">
                                        <label class="col-md-4 control-label" for="filebutton">Select File</label>
                                        <div class="col-md-4">
                                            <input type="file" name="file" id="file" class="input-large">
                                        </div>
                                    </div>

                                    <!-- Button -->
                                    <div class="form-group">
                                        <label class="col-md-4 control-label" for="singlebutton">Import data</label>
                                        <div class="col-md-4">
                                            <button type="submit" id="submit" name="Import" class="btn btn-primary button-loading" data-loading-text="Loading...">Import</button>
                                        </div>
                                    </div>

                                </fieldset>
                            </form>

                        </div>

                    </div>
                </div>
            </body>

            </html>

1 个答案:

答案 0 :(得分:1)

从显示的代码中可以明显看出,在尝试插入表时没有传递$sql查询的所有列值。因为我可以看到您有 15 列,但仅传递了 11 值。为什么?

$sql = "INSERT into lcho_dengue_activities (district_id,barangay_id,month,year,dengue_ind1,dengue_ind2,dengue_ind3,dengue_ind4,dengue_ind5,dengue_ind6,dengue_ind7,dengue_ind8,dengue_ind9,dengue_ind10,dengue_ind11) values('".$getData[0]."','".$getData[1]."','".$getData[2]."','".$getData[3]."','".$getData[4]."','".$getData[5]."','".$getData[6]."','".$getData[7]."','".$getData[8]."','".$getData[9]."','".$getData[10]."')";

  // Perform a query, check for error
  if (!mysqli_query($con,$sql))
  {
     echo("Error description: " . mysqli_error($con));
  }

由于列和传递的值数字不匹配mysqli_query($con,$sql)函数为false返回了$result,因此if(!isset($result))行计算的是{{1} }并转到包含消息false

的else块