[PHP、MySQL] 資料進入資料庫後要匯出

摘要:[PHP、MySQL] 資料進入資料庫後要匯出

前幾天,在做資料庫匯出(MySQL to xls)的設計時,遇到一個很嚴重的問題。

就是資料匯出到Excel檔的時候,如果資料庫內的欄位內容有text的型態並且存入的資料有斷行的話,在Excel匯出時也會出現斷行。

也就是會斷到下一列,為了解決這個問題,仔細的研究了一下我做檔案輸入時幹了些甚麼東西...


$chapterRange= addslashes($_POST['chapterRange']);
$testRange = addslashes($_POST['testRange']);
$numberofPeople = addslashes($_POST['numberofPeople']);
$environment = addslashes($_POST['environment']);
$homeBook = addslashes($_POST['homeBook']);

發現在資料進入資料庫前我做了addslashes,但想想...這跟輸入有什麼關係?他只是加了個反斜線在一些特殊字元前而已,所以我把方向轉到匯出的問題。

因為很清楚會斷行要嘛就是\n在作怪,要嘛就是<br/>在做怪,所以就先朝個\n的方向做處理。

於是我在輸出端加入了取代\n的函式:


$chapterRange = str_replace("\n","",$row[chapterRange]);
$testRange = str_replace("\n","",$row[testRange]);
$numberofPeople = str_replace("\n","",$row[numberofPeople]);
$environment = str_replace("\n","",$row[environment]);
$homeBook = str_replace("\n","",$row[homeBook]);

接著輸出...糟糕,匯出的Excel檔還是一樣斷行,怎麼辦..

想了想,加入一個函式做處裡看看:


$chapterRange = mysql_real_escape_string($chapterRange);
$testRange = mysql_real_escape_string($testRange);
$numberofPeople = mysql_real_escape_string($numberofPeople);
$environment = mysql_real_escape_string($environment);
$homeBook = mysql_real_escape_string($homeBook);

mysql_real_escape_string這個函式主要就是將SQL裡的特殊字元做顯示,加入後,很漂亮的輸出...雖然在匯出的Excel檔裡有一堆\r的斷行字元,但後來測試做匯入,很OK!

參考看看囉~