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