第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

試圖通過 PHP 將 15k 行 CSV 導(dǎo)入 SQL,但我每次只導(dǎo)入 600-900 行

試圖通過 PHP 將 15k 行 CSV 導(dǎo)入 SQL,但我每次只導(dǎo)入 600-900 行

PHP
汪汪一只貓 2022-12-30 17:49:11
這是我的第一篇文章,我為我的錯誤提前道歉......我正在嘗試通過 PHP 將一個 15k 行的 csv 文件導(dǎo)入到 SQL,但我每次只導(dǎo)入 600-900 行。這是我的代碼:<?php    if(isset($_POST["Import"]))    {     $filename=$_FILES["file"]["tmp_name"];         if($_FILES["file"]["size"] > 0)      {         $file = fopen($filename, "r");          while (($getData = fgetcsv($file, 0, ',', '"')) !== FALSE)           {             $sql = "INSERT into testimport()              values ('".$getData[0]."','".$getData[1]."','".$getData[2]."')";              $result = mysqli_query($conn, $sql);              if(!isset($result))              {                echo "<script type=\"text/javascript\">                alert(\"Invalid File:Please Upload CSV File.\");                window.location = \"readRecords.php\"                </script>";                  }              else               {                echo "<script type=\"text/javascript\">                alert(\"CSV File has been successfully Imported.\");                window.location = \"readRecords.php\"                </script>";              }           }        fclose($file);        }    }?>非常感謝你的幫助?。讨螉W
查看完整描述

3 回答

?
拉莫斯之舞

TA貢獻(xiàn)1820條經(jīng)驗 獲得超10個贊

while循環(huán)開始之前,添加以下代碼行:

set_time_limit (300)

它將執(zhí)行查詢的時間限制設(shè)置為 5 分鐘(300 秒)


查看完整回答
反對 回復(fù) 2022-12-30
?
HUWWW

TA貢獻(xiàn)1874條經(jīng)驗 獲得超12個贊

我結(jié)合了你的建議,現(xiàn)在這個過程完美無缺!


我可以在 28 秒內(nèi)導(dǎo)入 41 列的 15k 條記錄,在 60 秒內(nèi)導(dǎo)入 30k 條記錄!驚人的!現(xiàn)在,我需要讓它自動化,但那是另一個遺憾:-)


這是我的最終代碼:


include('dbconnect.php');


if(isset($_POST["Import"]))

{

     $filename=$_FILES["file"]["tmp_name"];    

     if($_FILES["file"]["size"] > 0)

     {

        ini_set('auto_detect_line_endings',TRUE); 

        $file = fopen($filename, "r");


          set_time_limit (45);

          while ($getData = fgetcsv($file, 0, ',', '"'))

           {

              $sql = "INSERT INTO testimport 

                    ( 

                      id_record,panel_number,machine_number,id_internal_code,

                      id_number,tot_production,waiting_time,operation_length,

                      avg_flow,max_flow,flow_15,flow_30,flow_60,flow_120,

                      avg_temp,max_temp,avg_cond,max_cond,m_detach,m_input,

                      m_quantity,m_input_nc,max_time,m_operation,m_sep_,

                      a_no_flow,a_conductivity,a_low_prod,a_kick_off,

                      a_temperature,prod_2min,low_flow_time,

                      50char_graph_data,data_enter,data_start,data_end,

                      data_exit,preparation_time,nr_session,perc_2min,

                      perc_low_flow

                    ) 


                    VALUES 

                     (

                        ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,

                        ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?

                     )"; 


                   $stmt = mysqli_prepare($conn, $sql);


                   $stmt->bind_param

                   (    "sssssssssssssssssssssssssssssssssssssssss",

                        $getData[0],  $getData[1],  $getData[2],  $getData[3], 

                        $getData[4],  $getData[5],  $getData[6],  $getData[7],  

                        $getData[8],  $getData[9],  $getData[10], $getData[11], 

                        $getData[12], $getData[13], $getData[14], $getData[15], 

                        $getData[16], $getData[17], $getData[18], $getData[19],

                        $getData[20], $getData[21], $getData[22], $getData[23], 

                        $getData[24], $getData[25], $getData[26], $getData[27], 

                        $getData[28], $getData[29], $getData[30], $getData[31], 

                        $getData[32], $getData[33], $getData[34], $getData[35], 

                        $getData[36], $getData[37], $getData[38], $getData[39],

                        $getData[40]

                   );


                   $sql = "INSERT into testimport() 

                   values 

                   (

                      ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,

                      ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?

                    )";


               $stmt->execute();

           }


        fclose($file);  

        mysqli_close($conn);

     }

}


查看完整回答
反對 回復(fù) 2022-12-30
?
藍(lán)山帝景

TA貢獻(xiàn)1843條經(jīng)驗 獲得超7個贊

在調(diào)用之前添加以下行fopen


ini_set('auto_detect_line_endings',TRUE);

請參閱 gmail.com 上的 james dot ellis 對https://www.php.net/manual/en/function.fgetcsv.php的評論


您的行尾可能由不同的操作系統(tǒng)以不同的方式編碼。例如,Windows 將是\r\n,而基于 Unix 的系統(tǒng)將使用\n


這可能導(dǎo)致一些行被連接在一起。例如,


Say,Something,Im<NEW_LINE_CHAR>

Giving,Up,On<NEW_LINE_CHAR>

如果 fgetcsv 正確捕獲結(jié)束行字符,它將生成 $getData 的單獨(dú)迭代,如下所示:


迭代 1:


[0] => Say

[1] => Something

[2] => Im

迭代 2:


[0] => Giving

[1] => Up

[2] => On

而如果它沒有正確檢測到結(jié)束字符,您最終會把兩行連接在一起。然后該行將被解析為包含 6 個元素的 $getData 數(shù)組。最后三個將被腳本忽略,該腳本只將位置 0,1 和 2 寫入 SQL 插入腳本。


迭代 1:


[0] => Say

[1] => Something

[2] => Im<NEW_LINE_CHAR>

[3] => Giving (Ignored)

[4] => Up (Ignored)

[5] => On<NEW_LINE_CHAR>(Ignored)

最后,您可能希望避免編寫將未經(jīng)驗證的字符串附加到插入代碼的 SQL 代碼。它很危險,而且很容易受到注入攻擊。強(qiáng)烈建議您考慮使用準(zhǔn)備好的語句,它看起來像這樣:



    $stmt = mysqli_prepare($sql);

    $stmt->bind_param($getData[0], $getData[1],$getData[2]);

    $sql = "INSERT into testimport() values (?,?,?)";


有關(guān)詳細(xì)信息,請參閱PHP:將表單中的值插入 MySQL。



查看完整回答
反對 回復(fù) 2022-12-30
  • 3 回答
  • 0 關(guān)注
  • 127 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號