Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要在php中使用fput()下载文件_Php - Fatal编程技术网

需要在php中使用fput()下载文件

需要在php中使用fput()下载文件,php,Php,我有多个条件,所以我试图生成一个函数,将sql数据下载到Csv文件。我在下载文件时遇到问题。每当我尝试下载时,页面只会重新加载,而文件不会下载。我不确定我做错了什么,因为当我使用echo命令时,我可以看到页面上显示的数据。如果有人能帮我并指引我走正确的路,那将非常有帮助 if(isset($_POST['report'])){ $sql = mysql_query("SELECT rating_postid,rating_posttitle,COUNT(rating_rating) AS

我有多个条件,所以我试图生成一个函数,将sql数据下载到Csv文件。我在下载文件时遇到问题。每当我尝试下载时,页面只会重新加载,而文件不会下载。我不确定我做错了什么,因为当我使用echo命令时,我可以看到页面上显示的数据。如果有人能帮我并指引我走正确的路,那将非常有帮助

if(isset($_POST['report'])){
    $sql = mysql_query("SELECT rating_postid,rating_posttitle,COUNT(rating_rating) AS Count,AVG(rating_rating) as Average FROM wp_ratings WHERE 1=1
    GROUP BY rating_postid,rating_posttitle") or die(mysql_error());
    generate_csv($sql);
}

function generate_csv($sql){ 

    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Cache-Control: private", false);
    header('Content-Type: text/csv; charset=utf-8');
    header('Content-Disposition: attachment; filename=data.csv');
    header("Content-Transfer-Encoding: binary");

    $num_rows = mysql_num_rows($sql);

    if($num_rows >= 1)
        {
            $row = mysql_fetch_assoc($sql);
            $fp = fopen('php://output','w');
            $sep = "";
            $comma= "";

    foreach($row as $name => $value)
    {
    $sep .= $comma . '' .STR_REPLACE('','""',$name);
    $comma = ",";
    }
    $sep .= "\n";

    fputs($fp,$sep);

    mysql_data_seek($sql,0);
    while($row = mysql_fetch_assoc($sql))
    {
    $sep = "";
    $comma= "";

    foreach($row as $name => $value)
    {
    $sep .= $comma . '' .STR_REPLACE('','""',$value);
    $comma = ",";
    }
    $sep .= "\n";
    fputs($fp,$sep);
    }
    fclose($fp);
    //echo $fp; 
    }
    else
    {
    echo 'NO RECORDS IN DATABASE';
    }

}

除了你的问题;请停止使用
mysql.*
函数。它们已经被弃用了很长一段时间,并且将停止在PHP7中工作。使用PDO或
mysqli.*
函数。感谢您的建议!我很感激!