Я создаю файл csv из MySQL с помощью PHP/PDO. Я помещаю заголовок, я генерирую список, но он постоянно их записывает.
<?php
require ('includes/config.php');
$BD = new ConnDB();
$archivo_csv = "saldos.csv";
if(!file_exists($archivo_csv)){
file_put_contents($archivo_csv,"Código,Nombre,Importe");
}
$sql = "SELECT cod, nom, saldo from cuentas where flag = 'X'";
$sth = $BD->query($sql);
$sth->execute();
if ($sth->rowCount() > 0) {
while ($fila = $sth->fetch(PDO::FETCH_ASSOC))
{
file_put_contents($archivo_csv,"n".join(",",$fila),FILE_APPEND);
}
}
?>
Это результат:
Код,Имя,Importen8,ALYDAR,135.00n21,AGUA SANTA,1442.00n30
В чем ошибка?
Вам нужно добавить разрывы строк
\n
. А чтобы избежать проблем с платформой, вы можете вместо этого использовать\n
нашего другаPHP_EOL
.Хотя я бы использовал более оптимизированный код для обработки файла и создания csv.
С помощью
fputs
вы можете писать в файл.С помощью
fopen
мы можем создать файл, если он не существует, и в то же время проверить, доступен он или нет, поскольку он возвращаетсяfalse
, если он не существует или не может быть создан.Вот доказательство результата:
Используйте fputcsv, это функция php, созданная для записи в формате csv, она также получает массив, поэтому у вас не будет проблем с вводом параметров.
Если вам нужен сгенерированный файл, который распределяет все данные в отдельной ячейке, используйте библиотеку PHPExcel. Вам просто нужно включить его в свой сценарий и ознакомиться с некоторыми примерами сгенерированных файлов, которые он содержит. Говорю тебе, ты покончишь с этим в мгновение ока.
Ваше здоровье!