【发布时间】:2018-04-04 13:54:28
【问题描述】:
抱歉,这个问题可能很简单,但我对 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();
?>
这是我应该拥有的:
虽然这是我能看到的:
我认为我正在编写标题来代替第一个数据行,但我找不到避免此问题的方法。有什么想法吗?
谢谢,斯特凡诺。
【问题讨论】:
-
你看
COPY了吗?例如stackoverflow.com/questions/49486039/…
标签: php postgresql