Upload CSV File Data in database table

Project : in this project you will learn how to upload CSV file data in database table.

index.php
                            
                              <?php include("upload-csv.php");  ?>
                              <!DOCTYPE html>
                              <html>
                              <head>
                               <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
                              </head>
                              <body>
                               <div class="container "><br>
                                    <div class="row mt-2">
                                        <div class="col-md-6 offset-3 border p-2" style="background: #f5f6fa;"> 
                                          <div class="w-100 text-center"><?php echo $error; ?><?php echo $msg; ?></div>    
                                          <form method="POST" action="#" enctype="multipart/form-data"><br>
                                             <h3 class="rounded bg-primary w-100 p-2 text-white text-center">Upload CSV File</h3>  
                                            <div class="form-group">
                                              <label for="file"><b>Upload CSV File :</b></label>
                                              <input type="file" name="csvfile" id="csvfile" class="form-control" style="height: 44PX;">
                                           </div><br>
                                           <div class="form-group">
                                            <input type="submit" name="csv" class="btn btn-success" value="Upload CSV File">
                                            <!-- <a href="index.php" class="btn btn-info float-right">Submit and Save CSV File</a> -->
                                           </div>
                                        </form>
                                       </div>
                                      </div>       
                                </div>
                              </body>
                              </html>
                            
                          

CSV File

user_data.csv
PHP

Upload Form

Select user_data.csv from project folder or from anywhere, it should be csv file to upload
PHP

Database and table name

We have to insert data in this table ('datas') of database dbdemo in phpMyAdmin.

check image

PHP

Create table in databse

Table in database

                              
                                CREATE TABLE `datas` (
                                  `id` int(11) NOT NULL  PRIMARY KEY AUTO_INCREMENT,
                                  `fullname` varchar(100) NOT NULL,
                                  `mobile` varchar(20) NOT NULL,
                                  `email` varchar(100) NOT NULL,
                                  `city` varchar(100) NOT NULL,
                                  `country` varchar(100) NOT NULL,
                                ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
                              
                          

Create database connection

Create connection with database
myproject/dbcon.php
dbcon.php
    
        $dbhost ="localhost";
        $dbuser ="root";
        $dbpswd ="";
        $dbname ="dbdemo";
        $dbcon= mysqli_connect($dbhost,$dbuser,$dbpswd,$dbname);
        if($dbcon){
            //echo "Connected............!!!";
            return $dbcon;
            exit();
        }else{
            die("Connection failed ? ? ?". mysqli_error($dbcon));
        }
        mysqli_close($dbcon);
    

Upload CSV File

Process to upload CSV file and insert data into database table from csv file.
upload-csv.php
                              
                              <?php  
                                  include('dbcon.php');
                                  $msg=''; $error='';
                                  if(isset($_POST['csv'])){
                                      $fileName = $_FILES['csvfile']['name'];
                                      $fileTmpName = $_FILES['csvfile']['tmp_name'];
                                      //find path the extension of file
                                         $fileExtension = pathinfo($fileName, PATHINFO_EXTENSION);
                                         //define allowed extension
                                          //$allowedType = array('csv');
                                        if(empty($fileName)){
                                          $error = "<div class='alert alert-info'><span style='color:red;'>The field is required !!</span></div>";     
                                        }else{
                                          $allowedType = ['csv'];
                                          if(!in_array($fileExtension, $allowedType)) {
                                             $error = "<div class='alert alert-info'><span style='color:red;'>Invalid file Extension !!</span></div>";
                                          }else{
                                            //Upload file
                                              if(($handle = fopen($fileTmpName, "r")) !== FALSE){
                                              //print_r($handle);
                                              // exit();
                                                while($mydata = fgetcsv($handle,1000,',')){
                                                    $fullname = $mydata[0];
                                                    $mobile   = $mydata[1];
                                                    $email    = $mydata[2];
                                                    $city     = $mydata[3];
                                                    $country  = $mydata[4];
                                                    $query = "INSERT INTO `datas` (`fullname`,`mobile`,`email`,`city`,`country`) VALUES('$fullname','$mobile','$email','$city','$country')";
                                                    $run = mysqli_query($dbcon,$query);
                                                    if($run){
                                                    $msg = "<div class='alert alert-success'><span style='color:green;'>The excel file has been uploaded into database !!</span></div>";
                                                    $fullname = ''; $mobile = ''; $email = ''; $city = ''; $country = '';
                                                  }else{
                                                    $error = "<div class='alert alert-info'><span style='color:red;'>Something went wrong in uploading file  !!</span></div>";
                                                  } 
                                                }
                                                fclose($handle); 
                                              }   
                                          }
                                       }
                                    }
                              
                          

CSV File Format

myproject/user-data.csv
user-data.csv
                              
                               "Motu Singh",111111010,mottu@demo.com,Pune,India 
                               "Pattlu Singh",2002020200,pattlu@demo.com,Mumbai,India 
                              
                          

css folder

You must download and include bootstrap css source files for good interface OR You can add cdn link from bootstrap website.
myproject/css
bootstrap.min.css