參考資料 ----
- $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); // 刪除檔案
- }
沒有留言:
張貼留言