php - 我想在新窗口中打开 pgsql 查询而不是下载为 csv

标签 php html postgresql

下面的代码成功地将 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/

相关文章:

sql - 子选择时间段

PHP - echo <br>

php - 如何在 Laravel PHPUnit 测试中获取响应变量?

javascript - 我应该在前端还是后端处理 html 表单验证?

html - 我的 iframe youtube 嵌入视频周围有神秘的灰色填充和边框

html - 如何将 2 个 SVG 并排放置在容器中并调整容器的高度?

javascript - Fancybox 不会加载内联内容

sql - PostgreSQL 中不需要的换行符翻译

postgresql - 将以前缀开头的短语与全文搜索相匹配

php - 从表中删除用户