2023-05-16

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

參考資料 ----

fgetcsv


  1.  
  2. $file = fopen($fileName, 'r'); // 開啟 CSV 檔案
  3. if($file)
  4. {
  5. fgetcsv($file); // 如果第一列是標題列, 空跑一次不讀取, 略過標題列
  6. while (($data = fgetcsv($file)) !== false)
  7. {
  8. // 逐行讀取 CSV 檔案的內容
  9. $num_fields = count($data); // 取得欄位數
  10. $sField0 = $data[0]; // 數字
  11. $sField1 = $data[1]; // 數字
  12. $sField2 = $data[2]; // 字串
  13. $sField3 = $data[3]; // 字串
  14. $sField4 = $data[4]; // html 字串
  15. $sField5 = $data[5]; // 字串
  16. switch($num_fields) // 因為我的 csv 檔有 2 種格式,欄位數 5 欄 & 6 欄 2 種
  17. {
  18. case 5: // 無第 6 欄
  19. $sField6 = 'null';
  20. break;
  21. case 6: // 有第 6 欄
  22. if(length($data[6])>0)
  23. // 第 6 欄有值
  24. $sField6 = "'".$data[6]."'";
  25. else
  26. $sField6 = 'null';
  27. break;
  28. }
  29. // 因為要防止 SQL injection, 當 SQL 語法中含有 html 時, html 會被 "洗掉"!
  30. // 所以要以 bindParam() 參數的方式組成 SQL 語法
  31. $sql = "INSERT INTO qbankd
  32. (Field1, Field2, Field3, Field4, Field5, Field6)
  33. VALUES
  34. ($sField1, '$sField2', '$sField3', :sField4, '$sField5', $sField6) ";
  35. $pdoStat = $pdo->prepare($sql);
  36. $pdoStat->bindParam(':sField4', $sField4);
  37. $pdoStat->execute();
  38. }
  39. fclose($file); // 關閉 CSV 檔案
  40. unlink($file); // 刪除檔案
  41. }
  42.  



沒有留言:

張貼留言