gpt4 book ai didi

php - 使用 PHP PDO 从 PostgreSQL 表导出 .csv 文件(带标题),缺少第一个数据行

转载 作者:行者123 更新时间:2023-11-29 12:41:08 26 4
gpt4 key购买 nike

抱歉,这个问题可能很简单,但我对 PHP 和 SQL 总体上还是个新手。

我正在尝试使用 PHP PDO 从 PostgreSQL 表中导出 CSV 文件。从丢失的第一个数据行开始,一切正常。

这是我的代码:

<?php

function bb()
{
$servername = "localhost";
$username = "postgres";
$password = "mypassword";
$dbname = "mydb";

$conn = new PDO("pgsql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT * FROM foundation");
$stmt->execute();

$filename = 'test_postgres.csv';

header('Content-type: application/csv');
header('Content-Disposition: attachment; filename=' . $filename);
header("Content-Transfer-Encoding: UTF-8");

$head = fopen($filename, 'w');

$headers = $stmt->fetch(PDO::FETCH_ASSOC);
fputcsv($head, array_keys($headers));

fclose($head);

$data = fopen($filename, 'a');

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
fputcsv($data, $row);
}

fclose($data);
}

bb();

?>

这是我应该拥有的:

img1

虽然这是我能看到的:

enter image description here

我想我正在写标题来代替第一个数据行,但我找不到避免这个问题的方法。有什么想法吗?

谢谢,斯特凡诺。

最佳答案

问题是当你读取表头的行时,那是数据的第一行,所以你也需要将这里的数据写入数据文件...

$headers = $stmt->fetch(PDO::FETCH_ASSOC);
fputcsv($head, array_keys($headers));

fclose($head);

$data = fopen($filename, 'a');
fputcsv($data, $headers); // This adds the data from the header row

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
fputcsv($data, $row);
}

关于php - 使用 PHP PDO 从 PostgreSQL 表导出 .csv 文件(带标题),缺少第一个数据行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49652894/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com