2023-05-16

【PHP】讀取 .csv 檔轉入資料庫,且檔案內容包含 html

參考資料 ----

fgetcsv


 
$file = fopen($fileName, 'r'); // 開啟 CSV 檔案
if($file) 
{
    fgetcsv($file);    // 如果第一列是標題列, 空跑一次不讀取, 略過標題列
    
    while (($data = fgetcsv($file)) !== false) 
    {
        // 逐行讀取 CSV 檔案的內容
        $num_fields = count($data);    // 取得欄位數
        $sField0 = $data[0];    // 數字
        $sField1 = $data[1];    // 數字
        $sField2 = $data[2];    // 字串
        $sField3 = $data[3];    // 字串
        $sField4 = $data[4];    // html 字串
        $sField5 = $data[5];    // 字串
        switch($num_fields)    // 因為我的 csv 檔有 2 種格式,欄位數 5 欄 & 6 欄 2 種
        {
            case 5: // 無第 6 欄
                $sField6 = 'null';
                break;
            case 6: // 有第 6 欄
                if(length($data[6])>0)
                    // 第 6 欄有值
                    $sField6 = "'".$data[6]."'";
                else
                    $sField6 = 'null';
                break;
        }
        
        // 因為要防止 SQL injection, 當 SQL 語法中含有 html 時, html 會被 "洗掉"!
        // 所以要以 bindParam() 參數的方式組成 SQL 語法
        $sql = "INSERT INTO qbankd
                (Field1, Field2, Field3, Field4, Field5, Field6)
                VALUES
                ($sField1, '$sField2', '$sField3', :sField4, '$sField5', $sField6) ";
        $pdoStat = $pdo->prepare($sql);
        $pdoStat->bindParam(':sField4', $sField4);
        $pdoStat->execute();
    }
    fclose($file);  // 關閉 CSV 檔案
    unlink($file);  // 刪除檔案
}
 



沒有留言:

張貼留言