![](/img/trans.png)
[英]how to import csv file data into mysql database using codeigniter?
[英]How to import CSV in database using Codeigniter PHP?
我正在嘗試使用csv插入記錄。 我想將csv上傳到我的應用程序,並想將其導入數據庫中。 現在我有一個用戶表,因此我想通過導入用戶的csv文件來創建用戶。 我對文件上傳了解得很少,但是對於將其導入數據庫沒有幫助,請提供幫助。
請參閱我使用以下命令完成文件上傳:控制器:
public function upload_csv()
{
$this->load->helper('form');
$this->load->helper('url');
//Set the message for the first time
$data = array('msg' => "Upload File");
$data['upload_data'] = '';
//load the view/upload.php with $data
$this->load->view('admin/user/upload', $data);
}
另一個控制器Upload_file
public function upload_it() {
//load the helper
$this->load->helper('form');
//Configure
//set the path where the files uploaded will be copied. NOTE if using linux, set the folder to permission 777
$config['upload_path'] = 'application/views/uploads/';
// set the filter image types
$config['allowed_types'] = 'gif|csv';
//load the upload library
$this->load->library('upload', $config);
$this->upload->initialize($config);
$this->upload->set_allowed_types('*');
$data['upload_data'] = '';
//if not successful, set the error message
if (!$this->upload->do_upload('userfile')) {
$data = array('msg' => $this->upload->display_errors());
} else { //else, set the success message
$data = array('msg' => "Upload success!");
$data['upload_data'] = $this->upload->data();
}
//load the view/upload.php
$this->load->view('admin/user/upload', $data);
}
和視圖:
<code>
<?php if($upload_data != ''):?>
<?php var_dump($upload_data);?>
</code>
<img scr="<?php echo $upload_data['full_path'];?>">
<?php endif;?>
<?php echo form_open_multipart('admin/upload_file/upload_it');?>
<input type="file" name="userfile" size="20" />
<br /><br />
<input type="submit" value="upload" />
</form>
現在如何將上載的文件導入數據庫?
首先在config文件夾中的route.php中更改default_controller值。
$ route ['default_controller'] =“ csv”;
將控制器創建為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');
}
}
?>
並將模型創建為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;
}
}
最后創建一個視圖,如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>
並創建要在其中插入數據的mysql表:
CREATE TABLE tableName(
id INT,
empName VARCHAR( 100 ) ,
empAddress VARCHAR( 100 ),
PRIMARY KEY (id)
)
最重要的一點是:
MySql和Csv文件應該都相同
示例CSV數據位於以下鏈接中:
https://drive.google.com/file/d/0B-OuLrage4PpUmtKNkhuS1JrSkE/view?usp=sharing
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.