Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何使用codeigniter将CSV导入mysql_Php_Codeigniter - Fatal编程技术网

Php 如何使用codeigniter将CSV导入mysql

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

我有一个csv文件列表,我想使用codeigniter将其导入mysql db

我尝试了
$this->load->library('getcsv')
有什么想法吗

示例:

我想要这样的东西

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)
)