Я пытаюсь экспортировать данные из таблицы базы данных SQL Server в файл CSV. Данные форматируются правильно и помещаются в каждую отдельную ячейку файла. Но заголовок не отформатирован правильно и печатается на одной ячейке как непрерывный поток.
Скажем, у вас есть заголовки a, b, c, d: Заголовок печатается как abcd в первой ячейке и не выплескивается на отдельные ячейки. как мы их отделяем?
Вот код:
$flag = false;
if ($query) {
while( $data = sqlsrv_fetch_array( $query, SQLSRV_FETCH_ASSOC) ) {
foreach($data AS $key => $value){
if(!$flag) {
// display field/column names as first row
$out .= implode("\t", array_keys($data)) . "\n";
//$out .= '"'.$head.'",';
$flag = true;
}
//If the character " exists, then escape it, otherwise the csv file will be invalid.
$pos = strpos($value, '"');
if ($pos !== false) {
$value = str_replace('"', '\"', $value);
}
$out .= '"'.$value.'",';
}
$out .= "\n";
}
$out .= implode("\t", array_keys($data)) . "\n";
Создает линию, разделенную на вкладку, но в другом месте вы используете запятую.
Вероятно, вы тоже хотите использовать запятую:
$out .= implode(",", array_keys($data)) . "\n";
fputcsv()
вместо вашей собственной реализации. php.net/manual/en/function.fputcsv.php