簡體   English   中英

使用php將CSV文件上傳到sql數據庫的更好方法

[英]Better way of uploading csv file to sql database using php

請幫助我改善代碼。 我有此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>

然后這是我的php代碼,用於上傳csv,如何顯示“您的文件正在上傳,請稍候”和“已完成上傳”的彈出消息。 我的問題是我的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家伙,有什么建議嗎?

最初,您可以禁用“提交”按鈕。 然后單擊以輸入文件,您可以調用js函數,該函數將驗證文件擴展名並相應地啟用提交按鈕。

為了顯示消息-您可以編寫JavaScript函數onclick提交按鈕。

對於動態處理大文件,這不是一個好習慣。 執行所有查詢都會超時(查詢數= csv中的行數)。 您可以按照以下步驟進行操作-

  1. 首先將csv文件上傳到服務器
  2. 創建一個存儲過程(將上傳的文件路徑傳遞到此過程),該過程會將csv文件加載到數據庫中。 您可以在此處獲取加載文件的幫助-https: //dev.mysql.com/doc/refman/8.0/en/load-data.html
  3. 對於排除標題,您將在上面的鏈接中獲得說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM