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

Posted

技术标签:

【中文标题】CodeIgniter - 将 CSV 上传到数据库问题【英文标题】:CodeIgniter - Uploading CSV to database issues 【发布时间】:2018-09-03 02:14:40 【问题描述】:

我有一个应用程序,我希望用户能够通过 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>

【问题讨论】:

【参考方案1】:

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

CSV 导入 [已弃用]

CSV Import 是一个 Codeigniter spark,它可以轻松地将 CSV 文件导入关联数组。

注意:我大约 3 年没有使用此代码,并且将不再提供任何类型的支持。但是,请自行承担使用此代码的风险。

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

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

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

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

    parsecsv/parsecsv-for-php 实现了RFC 4180(CSV 标准)并且看起来被积极维护。可以用 Composer 加载。

这里是一个使用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

【讨论】:

谢谢,我会调查这些 它看起来怎么样? :) 我可以使用这个github.com/jadirullah/Codeigniter-Impor-Csv-to-mysql ...内部使用fgetcsv。也许将此链接添加为答案,以便对其他人有所帮助:)【参考方案2】:

我可以通过关注link 中的 git 存储库来完成这项工作

【讨论】:

以上是关于CodeIgniter - 将 CSV 上传到数据库问题的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter 将部分 CSV 数据插入到 MYSQL 中,只有 id 和 date

如何使用 PHP CodeIgniter 将 CSV 数据导入 MYSQL 数据库?

在 Codeigniter 中上传 CSV 文件时出错

使用 codeigniter 将文件上传到数据库

带有 Summernote 的 CodeIgniter - 无法将图像上传到数据库

如何将文件codeigniter上传到数据库