下面的代码成功地将 pgsql 查询的结果下载为表单提交上的 csv 文件。但是,将附件更改为内联会生成一个包含所有数据的下载 php 文件。我的最终目标是在新窗口中以表格形式打开这些结果。请注意,这是表单中的第二个按钮,具有单独的 php 格式。
$result = pg_query_params($conn, $sql, $params);
if (!$result) {
echo "Query failed.\n";
exit;
}
$num_fields = pg_num_fields($result);
$headers = array();
for ($i = 0; $i < $num_fields; $i++)
{
$headers[] = pg_field_name($result , $i);
}
$fp = fopen('php://output', 'w');
if ($fp && $result)
{
header('Content-Type: text/csv');
header('Content-Disposition: attachment;');
header('Pragma: no-cache');
header('Expires: 0');
fputcsv($fp, $headers);
while ($row = pg_fetch_row($result))
{
fputcsv($fp, array_values($row));
}
die;
}
exit('It works');
}
感谢您的帮助。
最佳答案
您不能通过 HTTP header 或任何其他结果属性打开新窗口,它必须是请求的一部分。
要获得新窗口,请使用 target
向此表单发出请求的表单或链接上的属性。
例如<form target="_blank"
... 或 <a target="_BLANK"
...
但您可能会得到一个新标签而不是一个新窗口。
关于php - 我想在新窗口中打开 pgsql 查询而不是下载为 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41401094/