2014-10-24 3 views
0

Вот мой код:MySQL и PHP fputcsv полей разделителей не работает

<?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

Почему вы не использовали одни и те же параметры при печати строк? – Gumbo

+0

Зачем вам exepect fputcsv «помнить», как вы использовали его в прошлый раз? Вы не указываете какие-либо параметры разделителя для вызова fputcsv внутри цикла 'while()', поэтому fputcsv будет использовать свои значения по умолчанию. –

+0

Ow! прости меня. Не осознал мою глупую ошибку. –

ответ

3

Вы не устанавливаете «диалект» (разделитель и корпус), когда вы повторяете ряды рядов. То есть: ';','"' часть. Просто используйте:

while ($row = mysql_fetch_assoc($rows)){ 
    fputcsv($output, $row,';','"'); 
} 

Кроме того, для этого конкретного использования случай mysql_fetch_row() может быть более подходящим (вам избежать индексов строк на основе и использовать только числовые).

Сторона примечание: mysql_ functions family is obsolete, если возможно старайтесь replace it with mysqli_ or PDO.

 Смежные вопросы

  • Нет связанных вопросов^_^