这是我的代码:
<?php
error_reporting(E_ALL ^ E_NOTICE);
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=data.csv');
$output = fopen('php://output', 'w');
fputcsv($output, array('field1', 'field2'),';','"');
mysql_connect('localhost', 'usr', 'psswd');
mysql_select_db('db');
$rows = mysql_query('
SELECT
field1,
field2
FROM table
');
while ($row = mysql_fetch_assoc($rows)) fputcsv($output, $row);
mysqli_close($con);
?>
结果就是“;”分隔符仅用于csv文件的标头,而不是每行。 罐。
答案 0 :(得分:3)
当您遍历行时,您没有设置“ dialect ”(分隔符和机箱)。那是:';','"'
部分。只需使用:
while ($row = mysql_fetch_assoc($rows)){
fputcsv($output, $row,';','"');
}
同样对于这个特定用例mysql_fetch_row()
可能更合适(你避免使用基于字符串的索引,只使用数字索引)。
旁注:mysql_
functions family is obsolete,如果可以尝试replace it with mysqli_
or PDO
。