2011-12-17 64 views
4

可能重複:
PHP code to convert a MySQL query to CSV乾淨的方法,以MySQL查詢導出爲CSV在PHP

什麼是MySQL查詢導出爲CSV最好的和乾淨的方式(爲Excel 2003及更高版本)? 「最好」的條款正在測試,維護,可配置 ...所以像(標準)PHP庫將是理想的解決方案。

它應該正確手柄外殼,逃避,字符集,CR-LF,在第一排,字段名...等

已經有幾個關於這個問題在這裏的SO(如this one)但沒有一個真正關注我上面需要的屬性。

我的一些想法:

  • 使用fputcsv? (但是字符集,轉義和cr -lf貌似不能設置!)
  • 從phpmyadmin提取一些代碼...?
  • SELECT * INTO OUTFILE沒有在我的服務器工作(拒絕訪問)
  • system("mysqldump ...")是不可能的(安全模式託管)
+0

嗯。我不太確定你想要什麼。 CSV文件不是XLS文件。它只是一個逗號(或分號)分隔的文件。這與Excel 2003沒有太大關係。我不明白爲什麼在上面的「答案」中的「或」不會滿足您的問題?你在尋找一個開箱即用的解決方案嗎?就像我剛纔說的那樣,它只是一個CSV。上面的解決方案負責轉義,你所需要做的就是在第一行添加「字段名稱」 – Richard 2011-12-17 18:14:26

+1

看到一個格式良好並且研究得很好的問題,我感到很溫暖。你有我的+1。 – 2011-12-17 18:23:25

+0

謝謝@Truth。我試了很難:) – TMS 2011-12-17 19:30:30

回答

1

像你說的,fputcsv是相當有限的滿足您的要求。從phpMyAdmin中提取肯定是可能的(這裏是export logic),但使用專用庫可能會獲得更多成功。這裏有幾個選擇:

  • php-csv-utils。它是輕量級的,可配置的,看起來好像會輕鬆地放到大多數應用程序中。
  • File_CSV梨,缺乏文檔,但至少有2011年

釋放已經使用沒有這些,我很捨不得摘一個,而是基於文檔和可用性我會去爲第一個。

附加:我剛剛發現this SO question。查爾斯的回答非常像我的,我想我應該在這裏鏈接到它!

+0

很好的答案,非常感謝爲有用的鏈接!這正是我需要的! – TMS 2011-12-17 19:39:56

+0

最後我用[php-csv-utils](http://code.google.com/p/php-csv-utils/)。看着對實際上並不起作用的「新家」的引用,這個工具似乎目前還沒有維持。但運作良好,也許不需要mtce :-) – TMS 2014-02-14 08:35:19