CodeIgniter - 将CSV上传到数据库问题

时间:2018-03-24 14:41:15

标签: php mysql database codeigniter csv

我有一个应用程序,我希望用户能够通过CSV上传联系人列表并将其保存到数据库中。我已尝试设置brad stinsons CSV codeigniter library,但到目前为止遇到了麻烦...当我点击上传时,CSV就会消失,无处可去,没有任何错误..

如果有人能告诉我我是在正确的轨道上还是完全关闭,我真的很感激。

这是我的Csv_import.php控制器

public function load_data() {

    $result = $this->csv_import_model->select();
    $output = 'contacttable';
    $count = 0;
    if($result->num_rows() > 0)

    {
        foreach ($result->result() as $row)
        {
            $count = $count + 1;
            $output .= '
            <tr>
            <td>'.$count.'</td>
            <td>'.$row->fullname.'</td>
            <td>'.$row->email'.</td>
            <td>'.$row->country'.</td>
            <td>'.$row->gender'.</td>
            </tr>';

        }

    }
    else {
        $output .='<p>Data not available</p>';

    }
    $output .= '</table></div>';
    echo $output;


}

public function import()
{
    $file_data = $this->csvimport->get_array($_FILES["csv_file"] 
    ["tmp_name"]);

    foreach($file_data as $row)
    {
        $data[] = array (

        'fullname' => $row["fullname"],
        'email' => $row["email"],
        'country' =>$row["country"],
        'gender' =>$row["gender"]
        );

    }
    $this->csv_import_model->insert($data);
}

我的Csv_Import_model.php型号

class Csv_import_model extends CI_model
{
    function select()
    {
        $this->db->order_by('idcontacts', 'DESC');
        $query = $this->db->get('contacts');
        return $query; 
    }


    function insert($data)
    {
        $this->db->insert_batch('contacts', $data);
    }
}

我在仪表板上的视图

<form method="post" id="import_csv" enctype="multipart/form-data">
    <div class="form-group">
        <label>Select CSV File</label>
        <input type="file" name="csv_file" id="csv_file" required accept=".csv" />
    </div>

    <button type="submit" name="import_csv" class="btn btn-info" 
    id="import_csv_btn">Import CSV</button>
</form>
<br>
<div id="imported_csv_data"></div>

2 个答案:

答案 0 :(得分:1)

Github page of bradstinson/csv-import中所述:

  

CSV导入[DEPRECATED]

     

CSV导入是一个Codeigniter spark,可以很容易地将CSV文件导入关联数组。

     

注意:我在大约3年内没有使用此代码,也不再提供任何类型的支持。但是,您可以自担风险使用此代码。

因此,我强烈建议您不要在您的应用程序中使用已弃用的库。

请注意,您不必查找专用于CodeIgniter的CSV库。任何PHP库都可以在CI中加载。这最好通过Composer autoloading完成。

通过快速搜索,我可以推荐:

  1. 您是否知道PHP有its very own function (fgetcsv)来解析CSV文件?它有它的缺点(不尊重引用的字符串或多行CSV),但它可能适用于你的情况。

  2. parsecsv/parsecsv-for-php,它实现RFC 4180(CSV标准)并且看起来很有效。它可以加载Composer。

  3. 以下是使用fgetcsv的示例:

    if (($handle = fopen("myfile.csv", "r")) !== FALSE) {
        while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
            // Process with $data
        }
        fclose($handle);
    }
    

    以下是使用parsecsv的示例:

    $csv = new ParseCsv\Csv();
    $csv->delimiter = ",";
    $csv->parse('my-file.csv');
    foreach($csv->data as $row) {
        // Process using $row
    }
    

答案 1 :(得分:0)

我能够通过跟踪此link

中的git存储库来实现此目的