How to import CSV in database using Codeigniter PHP?

后端 未结 2 1850
陌清茗
陌清茗 2021-01-16 22:56

I am trying to insert records using csv. I want to upload csv to my Application and want to import it in database. Now I have a users table so i want to create users by impo

相关标签:
2条回答
  • 2021-01-16 23:40

    From a 2 second Google and the PHP docs:

    $csv = array_map('str_getcsv', file('data.csv'));
    

    Then you can loop through the Array and UPDATE your DB

    0 讨论(0)
  • 2021-01-16 23:42

    First change the default_controller value in route.php which lies inside config folder.

    $route['default_controller'] = "csv";

    Create a controller as csv.php

    <?php
    class csv extends CI_Controller
    {
        public $data;
        public function __construct()
        {
            parent::__construct();
            $this->load->model('csv_model');
        }
        function index()
        {
            $this->load->view('uploadCsvView',$data);
        }
        function uploadData()
        {
            $this->csv_model->uploadData();
            redirect('csv');
        }
    }
    ?>
    

    And create a model as csv_model.php

    <?php
    class csv_model extends CI_Model
    {
        function __construct()
        {
            parent::__construct();
        }
        function uploadData()
        {
            $count=0;
            $fp = fopen($_FILES['userfile']['tmp_name'],'r') or die("can't open file");
            while($csv_line = fgetcsv($fp,1024))
            {
                $count++;
                if($count == 1)
                {
                    continue;
                }//keep this if condition if you want to remove the first row
                for($i = 0, $j = count($csv_line); $i < $j; $i++)
                {
                    $insert_csv = array();
                    $insert_csv['id'] = $csv_line[0];//remove if you want to have primary key,
                    $insert_csv['empName'] = $csv_line[1];
                    $insert_csv['empAddress'] = $csv_line[2];
    
                }
                $i++;
                $data = array(
                    'id' => $insert_csv['id'] ,
                    'empName' => $insert_csv['empName'],
                    'empAddress' => $insert_csv['empAddress']
                   );
                $data['crane_features']=$this->db->insert('tableName', $data);
            }
            fclose($fp) or die("can't close file");
            $data['success']="success";
            return $data;
        }
    }
    

    And at last create a view as uploadCsvView.php

    <form action="<?php echo site_url();?>csv/uploadData" method="post" enctype="multipart/form-data" name="form1" id="form1"> 
        <table>
            <tr>
                <td> Choose your file: </td>
                <td>
                    <input type="file" class="form-control" name="userfile" id="userfile"  align="center"/>
                </td>
                <td>
                    <div class="col-lg-offset-3 col-lg-9">
                        <button type="submit" name="submit" class="btn btn-info">Save</button>
                    </div>
                </td>
            </tr>
        </table> 
    </form>
    

    And create mysql table where data is going to be inserted:

    CREATE TABLE tableName(
        id INT,
        empName VARCHAR( 100 ) ,
        empAddress VARCHAR( 100 ),
        PRIMARY KEY (id)
    )
    

    And most important point:

    MySql and Csv file should both be same

    Sample csv data is in the following link:

    https://drive.google.com/file/d/0B-OuLrage4PpUmtKNkhuS1JrSkE/view?usp=sharing

    0 讨论(0)
提交回复
热议问题