页面未加载强制 csv 下载

Page not loading with forced csv download

我有一个非常简单的页面。有一个按钮,按下该按钮会强制下载 CSV。除了一件事,那部分工作正常。该文件将在页面加载时立即下载。

为了消除这一点,我添加了一个 isset 语句。除了现在,页面没有加载。页面上存在绝对不应显示的非常陈旧的错误。我什至创建了一个新文件并添加了代码。该页面甚至不会加载。文件刚刚下载,然后一切都停止了。

有人知道是什么原因造成的吗?

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

$file_name = "subscriber_list.csv";
$file = fopen("subscriber_list.csv","w");

try {
    $servername = 'localhost';
    $usernameCon = '';
    $passwordCon = '';
    $con = new PDO('mysql:host='.$servername.';dbname=', $usernameCon, $passwordCon);

    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql_subscribers = "
        SELECT first_name, last_name, phone, email, new_mowers, used_mowers, date_subscribed
        FROM test_notif
        ORDER BY date_subscribed
    ";
    $subscriber_stmt = $con->prepare($sql_subscribers);
    $subscriber_stmt->execute();
    $subscriber_rows = $subscriber_stmt->fetchAll(PDO::FETCH_ASSOC);

    if (isset($_POST['submitbutton'])) {
        foreach ($subscriber_rows as $subscriber_row) {
            //fputcsv($file,explode(',',$subscriber_row));
            fputcsv($file, $subscriber_row);
        }
    }

    header('Content-type: application/octet-stream');
    header("Content-Disposition: attachment; filename='.$file_name.'");

    fclose($file);
    readfile($file_name);
    exit;
}
catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}

?>
<body>
    <form action="" name="csvForm" method="POST">
        <input type="submit" value="Download File" name="submitbutton">
    </form>
</body>
</html>

你可以试试

<?php
if (isset($_POST['submitbutton'])) {
    error_reporting(E_ALL);
    ini_set('display_errors', 1);

    $file_name = "subscriber_list.csv";
    $file = fopen("subscriber_list.csv","w");
    try {
        $servername = 'localhost';
        $usernameCon = '';
        $passwordCon = '';
        $con = new PDO('mysql:host='.$servername.';dbname=', $usernameCon, $passwordCon);

        $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql_subscribers = " SELECT first_name, last_name, phone, email, new_mowers, used_mowers, date_subscribed
              FROM test_notif
              ORDER BY date_subscribed ";
        $subscriber_stmt = $con->prepare($sql_subscribers);
        $subscriber_stmt->execute();
        $subscriber_rows = $subscriber_stmt->fetchAll(PDO::FETCH_ASSOC);

        foreach ($subscriber_rows as $subscriber_row) {
            //fputcsv($file,explode(',',$subscriber_row));
            fputcsv($file, $subscriber_row);
        }

        header('Content-type: application/octet-stream');
        header("Content-Disposition: attachment; filename='.$file_name.'");

        fclose($file);
        readfile($file_name);
    }
     catch(PDOException $e) {
        echo "Connection failed: " . $e->getMessage();
    }
}
?>
<body>
    <form action="" name="csvForm" method="POST">
        <input type="submit" value="Download File" name="submitbutton">
    </form>
</body>
</html>