Вот мой код:
<?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, а не в каждой строке.
Танки.
Ты не сидишьдиалект«(разделитель и вложение), когда вы перебираете желобковые строки. ';','"'
часть. Просто используйте:
while ($row = mysql_fetch_assoc($rows)){
fputcsv($output, $row,';','"');
}
Также для этого конкретного случая использования mysql_fetch_row()
может быть более подходящим (вы избегаете использования строковых индексов и просто используете числовые).
Примечание: mysql_
Семейные функции устарели, если это возможно, попробуйте заменить его на mysqli_
или же PDO
.
Других решений пока нет …