CSV匯出:
//建立標頭
fputs($file,"xEFxBBxBF"); //bom
fputs($file,"標題,標題,標題
"); //第一行是標題,用逗號隔開
//從資料庫讀資料
$str="select * from 表格"; //select query
$result=mysql_query($str);
while($arr=mysql_fetch_array($result))
{
//輸出的時候每個值用逗號分開,然後結束後斷行
$outdata = """.preg_replace( "/
|
/", "", $arr['欄位'])."",".
""".preg_replace( "/
|
/", "", $arr['欄位'])."",".
""".preg_replace( "/
|
/", "", $arr['欄位'])."",".
""".$arr['欄位'].""
";
fputs($file, $outdata);
}
//關閉文件
fclose($file);
//儲存在server上做備份後,接下來進行client端下載
$getFile = $ftpa;
header('Content-type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename="'.$file_name.'"');
header("Pragma: no-cache");
header("Expires: 0");
readfile($getFile);
//unlink($getFile); //若不需要在server上留備份就執行這一段
exit();
}
}
CSV匯入:
//先檢查是否有要匯入的檔案且檔案為csv格式 if(isset($_FILES['inputfile']) && strrchr($_FILES['inputfile']['name'],".") == ".csv") { $inputfile = $_FILES['inputfile']['tmp_name']; //取得匯入的csv檔案 $fp = fopen($inputfile, "r"); //透過fgetcsv函式可以很完整的切割字串 $row = 0; //計算行列 while ( $list = fgetcsv($fp, $CSVfile_size) ) { //檢查看看是否字串為空,若不是空的就執行匯入query if ( strlen($list[0]) && $row > 0) { if ( strlen($temp_SQL) ) $temp_SQL .= ", "; //執行一次性query的組合,每組值用逗號連接 //每個值都用mb_convert_encodeing來處理,可以排除中文字串問題 $temp_SQL .= "('" . mb_convert_encoding($list[0], "UTF-8", "BIG-5") . "', '" . mb_convert_encoding($list[1], "UTF-8", "BIG-5") . "', '" . mb_convert_encoding($list[16], "UTF-8", "BIG-5") . "') "; } $row++; //行列加1 } fclose($fp);//關閉csv檔案 //建立query $qury = "INSERT INTO users (欄位,欄位,欄位) VALUES " . $temp_SQL; mysql_query($qury); //輸出成功訊息 if ($res){ echo ""; } }
關於MYSQL query會遇到( ' )及( " )符號的問題, 解決方式如下