【问题标题】:Better way of uploading csv file to sql database using php使用php将csv文件上传到sql数据库的更好方法
【发布时间】:2018-10-31 08:22:15
【问题描述】:

请帮助我改进我的代码。我有这个 html 表单来选择一个 .csv 文件扩展名,然后将它上传到我的 sql 数据库中。我该如何改进呢?如果没有选择文件,比如使按钮不可点击。

<form class="ui input" enctype="multipart/form-data" method = "POST" role = "form">
  <input type = "file" name ="file" id="file" size = "150">
  <button class="ui small red button" type = "submit" class = "btn btn-default" name ="submit"  value = "submit">Upload CSV</button> 
</form>

然后这是我上传 csv 的 php 代码,我怎样才能弹出消息说“您的文件正在上传,请稍候”和“上传完成”。我的问题是我的csv文件的标题也被上传了如何排除我的csv的第一行?

<?php

if(isset($_POST['submit'])) {
    $host = 'localhost';
    $user = 'root';
    $password = '';
    $db = 'jeremy_db';

    $con = mysqli_connect($host,$user,$password) or die('Could not' .mysqli_error($con));

    mysqli_select_db($con, $db) or die ('Could not' .mysqli_error($con));

    $file = $_FILES['file']['tmp_name'];
    $handle = fopen($file, "r");

    $c = 0;

    while(($csvdata = fgetcsv($handle,1000,","))!== FALSE){
        $sha1 = $csvdata[0];
        $vsdt = $csvdata[1];
        $trendx  = $csvdata[2];

        $sql = "INSERT INTO jeremy_table_trend (sha1,vsdt,trendx) VALUES ('$sha1','$vsdt','$trendx')";
        $query = mysqli_query($con , $sql);

        $c = $c+1;
    }
    if($query){
        echo "SABRE";
    }
    else { 
        echo "SLAM";
    }
}
?>

我正在使用php 7,有什么建议吗?

【问题讨论】:

  • 您可以从使用准备好的语句开始 - 您对 SQL 注入 atm 持开放态度

标签: php html mysql


【解决方案1】:

最初您可以禁用提交按钮。然后单击输入文件,您可以调用一个js函数,该函数将验证文件扩展名并相应地启用提交按钮。

为了显示消息 - 你可以编写一个 javascript 函数 onclick 来提交按钮。

对于动态处理大文件,这不是一个好习惯。执行所有查询将超时(查询数 = csv 中的行数)。您可以按照以下步骤执行此操作 -

  1. 先上传csv文件到服务器
  2. 创建一个存储过程(将上传的文件路径传递给该过程),它将 csv 文件加载到数据库中。您可以在此处获取加载文件的帮助 - https://dev.mysql.com/doc/refman/8.0/en/load-data.html
  3. 对于不包括标题,您将在上面的链接中获得说明

【讨论】:

  • 你能帮帮我吗?我刚开始学习php。我应该在这里改变什么
猜你喜欢
  • 2017-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多