如何使用codeigniter将csv文件导入mysql
Posted
技术标签:
【中文标题】如何使用codeigniter将csv文件导入mysql【英文标题】:How to import csv file into mysql using codeigniter 【发布时间】:2014-03-05 18:37:31 【问题描述】:我想使用 codeigniter 将 csv 导入 mysql。 这是我的源代码。
查看
<?php $this->load->view("admin/v_header");?>
<?php $this->load->view("admin/v_top_menu");?>
<?php $this->load->view("admin/v_sidebar");?>
<div class="content">
<div class="header">
<h1 class="page-title">Import Data Dosen</h1>
</div>
<?php $this->load->view("admin/v_alert_msg");?>
<form class="form-horizontal" action="<?php echo base_url();?>admin/save_dosen" method="POST" enctype="multipart/form-data">
<fieldset>
<legend>Import Data Dosen</legend>
<div class="control-group">
<label class="control-label"><b>Pilih File :</b></label>
<div class="controls">
<div class="input-prepend">
<span class="add-on"><i class="icon-barcode"></i></span>
<input type="file" name="csv_dosen" id="csv_dosen"/>
</div>
</div>
</div>
<div class="control-group">
<div class="controls">
<button type="submit" class="btn btn-primary">
<i class="icon-ok icon-white"></i>Save
</button>
</div>
</div>
</fieldset>
</form>
</div>
<?php $this->load->view("admin/v_footer");?>
图书馆
<?php
error_reporting(0);
class Csv_impot
var $csvfile, $delimitatore, $nometable;
var $_FIELD;
function csv_import($cf = "", $del = "", $nt = "")
$this->csvfile = $cf;
$this->delimitatore = $del;
$this->nometable = $nt;
function export()
$csvhandle = file($this->csvfile);
$field = explode($this->delimitatore, $csvhandle[0]);
$kolom = "";
foreach ($field as $array_kolom)
$kolom.="`" . trim($array_kolom) . "`,";
$kolom = trim(substr($kolom, 0, -1));
//echo $kolom;
for ($i = 1; $i <= count($csvhandle); $i++)
$valori = explode($this->delimitatore, $csvhandle[$i]);
$values = "";
foreach ($valori as $val)
$val = trim($val);
if (eregi("NULL", $val) == 0)
$values.="'" . addslashes($val) . "',";
else
$values.="NULL,";
$values = trim(substr($values, 0, -1));
$query = "INSERT INTO " . $this->nometable . "(" . $kolom . ") values(" . trim($values) . ");";
$QUERY[$i] = $query;
return $QUERY;
控制器
function import_dosen()
$this->data['title']="Import Data Dosen";
$this->load->view("admin/v_import_dosen", $this->data);
function save_dosen()
if(isset($_FILES['csv_dosen']['name']))
$csv_dosen=$_FILES['csv_dosen']['name'];
$handle = fopen($csv_dosen,"r");
$this->load->library('csv_import');
$csv=new csv_import(".$handle.",",","dosen");
$query=$csv->export();
$this->m_dosen->eksekusi($query);
// $check_file= explode(".", $csv_dosen);
// if(strtolower($check_file[1])=="csv")
//
// $csv_dosen=$_FILES['csv_dosen']['temp_name'];
// $handle = fopen($csv_dosen,"r");
// while (($data = fgetcsv($handle, 1000,",")) !== FALSE)
//
// echo "haha";
//
//
// elseecho "bukan file csv";
//$handle = fopen($csv_dosen,"r");
//$csv_dosen_type=$_FILES['csv_dosen']['type'];
//$csv_dosen_size=$_FILES['csv_dosen']['size'];
//echo $handle;
型号
<?php
class M_dosen extends CI_model
function __contruct()
parent::__construct();
function eksekusi($query)
//echo "<br/>";
//echo count($query);
for($i=1;$i<count($query);$i++)
$this->db->query($query[$i]);
//echo $query[$i];
//echo "<br/>"
?>
当我运行此代码时,错误显示 [function.fopen]: failed to open stream: No such file or directory。 我是如何解决这个问题的? 我希望你能帮助解决这个问题。 谢谢。
【问题讨论】:
这是什么".$handle."
?
$handle 是一个变量,用于捕获我的目录中 csv 文件的位置。
这里. .
有什么需要?
哦,对不起“.$handle”。必须是 $handle :)
好的。现在它工作了吗?
【参考方案1】:
根据您的库,您必须将文件名传递给您的 Csv_impot 构造函数。但是您正在传递文件处理程序。
所以改变你的代码如下。
//general oops method:
$csv=new csv_import($csv_dosen,",","dosen");
//In CI,
$this->load->library('csv_import',array($csv_dosen,",","dosen")); // no need to create object again. Array of values will be parameter for constructor.
【讨论】:
一个错误显示不存在的类:Csv_import以上是关于如何使用codeigniter将csv文件导入mysql的主要内容,如果未能解决你的问题,请参考以下文章