Не удается получить CSV-файл с использованием fputcsv () и массива, возвращаемого pg_fetch_xxx () - PullRequest
0 голосов
/ 28 июня 2019

Я пытаюсь экспортировать CSV-файл с помощью php, используя массив, возвращаемый pg_fetch_array.Но файл CSV пуст.

Если я пишу массив вручную, CSV является правильным.Я попытался построить массив из pg_fetch_all без успеха.

<?php
$listope = pg_fetch_array($marequete) ;

$fichier = fopen("export.csv", "w") ;

foreach ($listope as $line) {
    fputcsv($fichier, explode(',',$line));
}

fclose($fichier) ;
?>

Я знаю, что проблема в $listope var, который не возвращает правильный массив, но я не могу найти решение.Спасибо за помощь

Ответы [ 2 ]

2 голосов
/ 28 июня 2019

Не взрывайте массив, функция fputcsv () сделает все за вас

Так просто сделай

fputcsv($fichier, $line);

Другое дело, вы читаете только одну строку из набора результатов, теперь это может быть потому, что вы ожидаете только одну строку, но поскольку вы также кодируете цикл, если запрос сгенерирует более одной строки, попробуйте это, используя pg_fetch_all()

$listope = pg_fetch_all($marequete) ;

$fichier = fopen("export.csv", "w") ;

foreach ($listope as $line) {
    fputcsv($fichier, $line);
}

fclose($fichier) ;

Справочник Руководство

1 голос
/ 28 июня 2019

Я думаю, вы делаете это более сложным, чем необходимо. pg_fetch_array() возвращает одну строку из вашего набора результатов, поэтому для сохранения в файле CSV вам потребуется только:

$listope = pg_fetch_array($marequete) ;

$fichier = fopen("export.csv", "w") ;

fputcsv($fichier, $listope);
...