在PHP中将MySQL查询结果导出为CSV文件的最干净的方法

4
可能重复:PHP代码将MySQL查询转换为CSV 最好和最干净的方法是将mysql查询导出到CSV(适用于Excel 2003及更高版本)? “最好”指的是经过测试、维护、可配置的...因此,像(标准)PHP库这样的东西将是理想的解决方案。
它应该正确地处理第一行中的字段名称、括号、转义、字符集、回车换行等。
在SO上有一些关于此问题的问题(如此问题),但没有一个真正专注于我上面所要求的属性。
我的一些想法:
  • 使用fputcsv?(但字符集、转义和回车换行似乎无法设置!)
  • 从phpmyadmin中提取一些代码...?
  • SELECT * INTO OUTFILE在我的服务器上无法使用(访问被拒绝)
  • system("mysqldump ...")不可能(安全模式主机)

嗯,我不太确定你想要什么。CSV文件不是XLS文件。它只是一个逗号(或分号)分隔的文件。这与Excel 2003没有太大关系。我不明白为什么我上面链接的“答案”中的“或”不能解决你的问题?你是在寻找开箱即用的解决方案吗?就像我说的,它只是一个CSV...上面的解决方案会处理转义,你所需要做的就是添加“第一行中的字段名”。 - Richard
1
看到一个格式良好、经过研究的问题,让我感到很温暖。你有我的赞。 - Madara's Ghost
谢谢@Truth。我很努力尝试了 :) - Tomas
@Richard,我写“csv for excel”,因为我猜测CSV格式可能存在细微差别-在PHPmyAdmin中,你可以选择CSV和“CSV for MS Excel”选项... - Tomas
1个回答

1

就像你所说的,fputcsv对于你的要求而言相当有限。从phpMyAdmin中提取数据肯定是可能的(这里是导出逻辑),但你可能会更成功地使用一个专用库。以下是几个选择:

  • php-csv-utils。它很轻量级,可配置,并且看起来很容易融入大多数应用程序。
  • PEAR的File_CSV,缺乏文档,但至少在2011年发布了一个版本。

我都没有使用过,所以不愿意挑选其中之一,但基于文档和可用性,我会选择第一个。

附加信息:我刚刚发现这个SO问题。Charles的答案与我的如此相似,我认为我应该在这里链接一下!


最终我使用了php-csv-utils。看到“新家”这个链接实际上并没有用,这个工具似乎目前没有维护。但是它运行良好,也许不需要维护 :-) - Tomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接