Я пытаюсь преобразовать массив, возвращаемый sql-запросом, в файл CSV, но я испытываю странное поведение моего кода, поскольку первая строка моего файла CSV выходит пустой, а также строка, содержащая заголовки столбцов, начинается после двух блоков. следующий мой код,
$csv = "name,job,salary,age \n";
$export = $this->model2->emp_data();
foreach ($export as $key => $value) {
$csv.= $value['name'].','. $value['job'].','. $value['sal'].','.$value['age']."\n";
}
$filename ='excel.csv';
header("Content-Type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename = " . $filename);
header("Pragma: no-cache");
header("Expires: 0");
$csv_handler = fopen('php://output', 'w');
fwrite ($csv_handler,$csv);
fclose ($csv_handler);
$ csv дает мне имена моих заголовков, $ export - это данные, возвращаемые sql что я здесь не так? Спасибо
образец ввода (данные, возвращенные запросом) -
[0] => Array
(
[name] => jeff1
[job] => DBA
[sal] => 6999
[age] => 44
[create] => test
[update] => test
)
[1] => Array
(
[name] => jeff2
[job] => DBA
[sal] => 6999
[age] => 44
[create] => test
[update] => test
)
....so on
выход - https://drive.google.com/open?id=1u0Q8OgerLAGlq_r610W7KU0N0hnu0gZE
привет Джефф спасибо за быстрый ответ проверьте вопрос, который я только что задал
Не выводите свои строки, просто соединяя поля запятыми - он сломается, как только вы получите поле с запятой. Вместо этого используйте fputcsv(), который сделает за вас все необходимое экранирование.
спасибо @AlexHowansky, я хотел обновить код, чтобы использовать fputcsv () .. Решит ли это проблему, с которой я сейчас сталкиваюсь с заголовками?
Какая у вас версия PHP и какие сведения о сервере? Я тоже сталкиваюсь с той же проблемой. Это началось после обновления до PHP 7.
Попробуйте открыть этот CSV с помощью текстового редактора (не Excel) и проверьте, есть ли в начале пустая строка.
Проверить: ozonesolutions.com/programming/2012/06/…
@MadhurBhaiya да, там пусто, но я не понимаю, откуда оно?
Я проверил функцию, в которой я написал метод загрузки, но там нет пустых строк, есть ли способ игнорировать эти пробелы
Возможно, вы захотите понять и попробовать решение этого поста.






не могли бы вы добавить образец ввода и текущего вывода?