编辑:将错误的功能部分复制到此问题中,以下是适当的部分。
$values = mysql_query("SELECT lname, fname, email, dtelephone, etelephone, contactwhen, thursday,
friday, saturday, sunday, monday, comments FROM volunteers_2009 WHERE venue_id = $venue_id");
while ($rowr = mysql_fetch_row($values)) {
for ($j=0;$j<$i;$j++) {
$csv_output .= $rowr[$j].", ";
}
$csv_output .= "\n";
}
我的评论中可能有逗号,甚至是双引号,当它在注释字段中有逗号时,会抛出整个csv文件。
下面的代码是如何将数据加载到csv字符串中,放入csv文件中。
如何正确导出评论字段数据?
答案 0 :(得分:10)
你应该看看fputcsv()
。那里也有一些有用的评论。
int fputcsv ( resource $handle , array $fields [, string $delimiter = ',' [, string $enclosure = '"' ]] )
fputcsv()格式化一行(已通过 作为字段数组)作为CSV并将其写入(以换行符终止) 指定的文件句柄。
答案 1 :(得分:6)
用双引号括起该字段。加倍任何嵌入的双引号。
ordinary field,"field with , in it","field with double double quote ("""")"
非常非常接近
答案 2 :(得分:1)
Umn,为什么不使用内置的mySQL命令?如果我错过了什么,请忽略,但我认为这是最快的路线:
http://www.netreveal.com/ddalton/2006/08/how_to_export_mysql_to_csv.html
网站基本上建议:
SELECT <fields or *> INTO OUTFILE '/tmp/result.text'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM <table> WHERE <condition>
答案 3 :(得分:0)
编辑:我的不好,我刚刚测试了它并且它不起作用 - 至少在Excel中没有。
您可以用其他内容替换逗号:
$field = str_replace(',','#COMMA#',$row['Field']);
$csv_output .= $field.', ';
答案 4 :(得分:0)
您可以使用不同的分隔符,例如“|”或“@”或其他一些不太可能出现在数据中的字符。
大多数csv软件都能够读取“csv”文件,该文件使用逗号之外的其他内容作为分隔符。
答案 5 :(得分:0)
导出数据时,保留数据中的逗号和双引号是否很重要?您可以随时读取它,然后在将数据导出到CSV之前修改数据。
我通常做的是用双引号括起所有内容,并将“,”(双引号逗号双引号)组合成我的分隔符。这样,如果我偶然发现随机双引号或随机逗号,这不是什么大问题。