Php 如何使用codeigniter将CSV导入mysql
我有一个csv文件列表,我想使用codeigniter将其导入mysql db 我尝试了Php 如何使用codeigniter将CSV导入mysql,php,codeigniter,Php,Codeigniter,我有一个csv文件列表,我想使用codeigniter将其导入mysql db 我尝试了$this->load->library('getcsv')input->upload['tmp\u name']我给出了确切的答案。看看我的这个答案,你的问题的解决方案 这将生成CSV格式的报告 这将告诉您如何读取和转储csv文件 试试这个: 数据库: SET FOREIGN_KEY_CHECKS=0; DROP TABLE IF EXISTS `contacts`; CREATE TABLE `cont
$this->load->library('getcsv')但是如何导入csv而不将csv文件上传到服务器,我的意思是将文件上传到一个临时位置,就像纯编码PHP那样
有什么想法吗
示例:
我想要这样的东西
HTML:
到临时字符串
Codeigniter:$this->input->upload['tmp\u name']
我给出了确切的答案。看看我的这个答案,你的问题的解决方案
这将生成CSV格式的报告
这将告诉您如何读取和转储csv文件
试试这个:
数据库:
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `contacts`;
CREATE TABLE `contacts` (
`contact_id` int(11) NOT NULL auto_increment,
`contact_first` varchar(255) character set latin1 default NULL,
`contact_last` varchar(255) character set latin1 default NULL,
`contact_email` varchar(255) character set latin1 default NULL,
PRIMARY KEY (`contact_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
import.php::
<?php
//connect to the database
$connect = mysql_connect("localhost","username","password");
mysql_select_db("mydatabase",$connect); //select the table
//
if ($_FILES[csv][size] > 0) {
//get the csv file
$file = $_FILES[csv][tmp_name];
$handle = fopen($file,"r");
//loop through the csv file and insert into database
do {
if ($data[0]) {
mysql_query("INSERT INTO contacts (contact_first, contact_last, contact_email) VALUES
(
'".addslashes($data[0])."',
'".addslashes($data[1])."',
'".addslashes($data[2])."'
)
");
}
} while ($data = fgetcsv($handle,1000,",","'"));
//
//redirect
header('Location: import.php?success=1'); die;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Import a CSV File with PHP & MySQL</title>
</head>
<body>
<?php if (!empty($_GET[success])) { echo "<b>Your file has been imported.</b><br><br>"; } //generic success notice ?>
<form action="" method="post" enctype="multipart/form-data" name="form1" id="form1">
Choose your file: <br />
<input name="csv" type="file" id="csv" />
<input type="submit" name="Submit" value="Submit" />
</form>
</body>
</html>
//get the csv file
$file = $_FILES[csv][tmp_name];
$handle = fopen($file,"r");
//loop through the csv file and insert into database
do {
if ($data[0]) {
mysql_query("INSERT INTO contacts_tmp (contact_first, contact_last, contact_email) VALUES
(
'".addslashes($data[0])."',
'".addslashes($data[1])."',
'".addslashes($data[2])."'
)
");
}
} while ($data = fgetcsv($handle,1000,",","'"));
//
使用PHP和MySQL导入CSV文件
选择您的文件:
//获取csv文件
$file=$_文件[csv][tmp_名称];
$handle=fopen($file,“r”);
//循环浏览csv文件并插入数据库
做{
如果($data[0]){
mysql\u查询(“插入联系人\u tmp(首先联系,最后联系,电子邮件联系)”值
(
“.addslashes($data[0])”,
“.addslashes($data[1])”,
“.addslashes($data[2])。”
)
");
}
}而($data=fgetcsv($handle,1000,“,”,“”));
//
首先更改route.php(位于config文件夹中)中的默认\u控制器值
$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');
}
}
?>
<?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;
}
}
<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和Csv文件应该是相同的
示例csv数据位于以下链接中:
您的解决方案看起来不错,但我如何将CSV上传到临时位置等并使用它?为此,您必须使用文件上传已在此处回答
CREATE TABLE tableName(
id INT,
empName VARCHAR( 100 ) ,
empAddress VARCHAR( 100 ),
PRIMARY KEY (id)
)