-4

可能重复:
“警告:无法修改标头信息 - 标头已发送”错误

我在我的网站上收到这些错误

警告:无法修改标头信息 - 标头已经由 /home/****/public_html/monday/tuffturf/createrep.php:7 中的 /home/****/public_html/monday/tuffturf/ 发送第 103 行的 createrep.php

警告:无法修改标头信息 - 标头已经由 /home/****/public_html/monday/tuffturf/createrep.php:7 中的 /home/****/public_html/monday/tuffturf/ 发送第 104 行的 createrep.php

警告:无法修改标头信息 - 标头已经由 /home/****/public_html/monday/tuffturf/createrep.php:7 中的 /home/****/public_html/monday/tuffturf/ 发送第 105 行的 createrep.php

警告:无法修改标头信息 - 标头已经由 /home/****/public_html/monday/tuffturf/createrep.php:7 中的 /home/****/public_html/monday/tuffturf/ 发送createrep.php 第 106 行查询失败请重试

mysql_fetch_assoc():提供的参数不是有效的 MySQL 结果资源

我检查了 php 标签中的空格,我尝试了不同的东西,但我找不到解决方案

php 从第 86 行开始,在 134 结束

<?php
$server = 'localhost';
$username = '*****';
$password = '*****';
mysql_connect($server, $username, $password);
mysql_select_db('***_turfdb')
or die ("unable to connect to mysql");

    $reports = array(
    'all' => 'SELECT * FROM quotepage',
    'recent' => 'SELECT * FROM quotepage ORDER BY entered DESC LIMIT 20',
    'oldest' => 'SELECT * FROM quotepage ORDER BY entered ASC LIMIT 20'
    );
    if (!array_key_exists($_POST['report'], $reports) || !isset($_POST))
    {
    die('Error generating report. please try again later.');
    };
    header("content-type:text/csv; charset=utf-8");
    header('Content-Disposition:attachment;filename='.date('Y-m-d').'.csv');
    header("pragma: no-cache");
    header ("expires: 0");


/*if(isset($_POST) && !empty($_POST)) {
            if(mysql_query($query)) {
                echo "<script type=\"text/javascript\"> alert('All information entered was successfully will now show report.'); </script>";
            } else {
                echo "<script type=\"text/javascript\"> alert('There was an error please try again later.'); </script>";
                echo mysql_error();
            }
        }*/

    if(isset($_POST['header']))
    {
        $field = mysql_query('SHOW COLUMS FROM quotepage');
        $label = array();
        while($field = mysql_fetch_assoc($field));
    {
        $labels[] = $field ['Field'];
    };
         echo implode (',', $labels) . "\n";
    }
        $data = mysql_query($reports[$_POST['report']]);
        while($row = mysql_fetch_assoc($data));
        die ("query failed please try again");
    {
            echo implode(',', $row) . "\n";
    }
?>  

这是使用下拉框选择要在 csv 报告中显示的报告数量

这是我第一次尝试创建 csv 报告,所以如果需要更多信息,请询问

4

2 回答 2

1

如错误消息所示,您在createrep.php的第 7 行有输出。

header()必须在任何输出发送到浏览器(空白、HTML 等)之前使用。

您注意到您提供的代码在第 86 行。我想您在上面的 85 行中输出了一些内容。

于 2012-06-11T02:54:21.700 回答
0

看起来我们这里没有所有代码,因为它看起来不像 100 多行代码。我的猜测是某个地方的 PHP 标记之外的空格或换行符。我总是在 PHP 文件的底部省略结束标记,因为如果在结束 PHP 标记之后有空格或换行符,那么它将被解释为要发送到浏览器的 html 输出。省略结束 PHP 标记并不是错误,所以如果我是你,我会养成这个习惯。

于 2012-06-11T03:04:49.653 回答