【问题标题】:Can't get a csv file using fputcsv() and an array returned by pg_fetch_xxx()无法使用 fputcsv() 和 pg_fetch_xxx() 返回的数组获取 csv 文件
【发布时间】:2023-03-19 19:05:01
【问题描述】:

我正在尝试使用 pg_fetch_array 返回的数组通过 php 导出 csv 文件。但是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 没有返回正确的数组,但我找不到解决方案。 感谢您的帮助

【问题讨论】:

    标签: php fputcsv


    【解决方案1】:

    不要爆炸数组,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) ;
    

    参考The manual

    【讨论】:

    • 我没那么远...谢谢。事实上,我期待从查询中得到 0 或 n 个结果。
    【解决方案2】:

    我认为您使这变得比必要的复杂。 pg_fetch_array() 从您的结果集中返回一行,因此您想将其保存在 csv 文件中,您只需要:

    $listope = pg_fetch_array($marequete) ;
    
    $fichier = fopen("export.csv", "w") ;
    
    fputcsv($fichier, $listope);
    

    【讨论】:

    • 有趣,我们如何看待同一个问题的方式略有不同:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 2015-04-04
    • 2014-10-30
    • 1970-01-01
    相关资源
    最近更新 更多