无法使用PHP和MySQL在浏览器上下载CSV文件

无法使用PHP和MySQL在浏览器上下载CSV文件,php,mysql,angularjs,csv,Php,Mysql,Angularjs,Csv,我需要将mysql记录下载到浏览器上的csv文件中,但根据我的代码,它不能按预期工作。这是我的密码: $scope.downloadAllCustomerData=function(){ var url2='../service/admin/customer/customer.php?action=downloadAllCustomerData'; var method='GET'; var data1=''; DataServic

我需要将mysql记录下载到浏览器上的csv文件中,但根据我的代码,它不能按预期工作。这是我的密码:

$scope.downloadAllCustomerData=function(){
        var url2='../service/admin/customer/customer.php?action=downloadAllCustomerData';
        var method='GET';
        var data1='';
        DataService.connectToServerSideScript(method,url2,data1)
        .then(function(response) {
            console.log('response',response);

        },function(error) {

        })
    }
这是我的客户端代码,它请求sevre下载
.CSV
文件

if ($_REQUEST["action"]=="downloadAllCustomerData") {
        header('Content-Type: text/csv; charset=utf-8');  
        header('Content-Disposition: attachment; filename=data.csv');  
        $output = fopen("php://output", "w");  
        fputcsv($output, array('ID', 'Name', 'Email', 'MObile No'));  
        $sql = "SELECT user_id,name,email,mobile from cb_customer_info ORDER BY user_id DESC";
        $stmt = $db->prepare($sql);
        if ($stmt->execute()) {
            $row = $stmt->fetchAll();
            $number_of_rows= count($row);
            if ($number_of_rows > 0) {
                fputcsv($output, $row);
                $data=array("status"=>1,"msg"=>"Downloaded all data successfully.");
            }else{
                $data=array("status"=>0,"msg"=>"No record found.");
            }
            fclose($output);
        }
        echo json_encode($data);
    }

这里我试图将mysql记录下载到.csv文件中。我需要用户何时单击按钮,这些记录将在浏览器上下载。

最好形成数据并将其回送/打印到浏览器,而不是使用php://output 小溪

常用的下载头

            header("Content-Disposition: attachment;filename=\"".$file_name."\"");
            header('Content-Type: '.$content_type); 
            header("Accept-Ranges: bytes"); 
            header("Pragma: private"); 
            header("Expires: -1"); 
            header("Cache-Control: private, must-revalidate, post-check=0, pre-check=0"); 
            header("Content-Length: ".$filesize); 

我使用了所有的标题,但仍然是同一个问题。你能尝试直接在echo/print上转储数据吗?我喜欢
echo($output)但它不是下载的。我正在粘贴下面的示例代码,标题(“内容配置:附件;文件名=\”.$file\u name.\”;标题(“内容类型:”.$Content\u Type);标题(“接受范围:字节”);标题(“Pragma:private”);标题(“到期:-1”);标头(“缓存控制:专用,必须重新验证,后检查=0,预检查=0”);标题(“内容长度:.$filesize”);打印$数据;ob_flush();冲洗();我按照你说的做了,但它在浏览器控制台中写入了所有数据,但没有下载任何csv文件。这是一个快速提醒,你没有“解释”你的代码。我理解英语不是你的第一语言,但这里有一个期望,当人们在你的措辞上提供帮助时,你会注意并改变方向。现在你没有理由仍然使用这种尴尬的措辞,因为你很清楚有一个更好的措辞。“这是我的密码”很好。