修改HTTP标头信息时出错

时间:2012-02-13 14:01:22

标签: php

我遇到了这些错误(我已经检查过第5行,找不到任何白线,并且在线上找到了sql。我已经检查了拼写和语法,它们没问题。)

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/reachea2/public_html/orderpplac.php on line 53

Warning: Cannot modify header information - headers already sent by (output started at /home/reachea2/public_html/orderpplac.php:53) in /home/reachea2/public_html/include/functions.php on line 5

代码:

<?php
require_once("include/session.php");
require_once("include/dataconnect.php"); 
require_once("include/functions.php");
if (isset($_POST['submit1'])) {
    if(array_key_exists('item', $_POST)){
        // $items = $_POST['item'];
        //foreach($_POST['item'] as $item){
            //echo $item['Pquantity'] . ", ";
            //echo $item['Pidno'] . ", ";
        // }
        //Loop through $_POST items, updating the database for each item
        foreach ($_POST['item'] as $item) { 
            $Pquantity = intval($item['Pquantity']);
            $Pidno = ($item['Pidno']); 
            //echo $Pquantity . ", ";
            //echo $Pidno . ", ";
            $queryreg = mysql_query("
                UPDATE repplac
                SET Pquantity = {$Pquantity}
                WHERE Pidno = '{$Pidno}'
                AND Uname = '{$_SESSION['username']}'
            ") or die(mysql_error());  
        }
    }
}
else if (isset($_POST['submit2'])) {
    //Get Email Address
    $emails = mysql_query("SELECT reusers.email FROM reusers INNER JOIN repplac ON reusers.username = repplac.Uname AND reusers.username = '{$_SESSION['username']}'")or die(mysql_error());
    //$emails = mysql_query("SELECT reusers.email FROM reusers INNER JOIN repplac ON reusers.username = repplac.Uname AND reusers.username = '".$_SESSION['username']."'")or die(mysql_error());
    $results = (mysql_fetch_assoc($emails)) or die(mysql_error());
    $email= $results['email'];
    //echo "$email";
    //die();
    if(mysql_num_rows($emails) == 0){
        exit("No email addresses found for user '{$_SESSION['username']}'");
    }
    $email = mysql_result($emails, 0);

    //Get list to email user
    $body = "<html><body><table border='1'>
    <tr>
        <th>Shop Name</th>
        <th>Product Name</th>
        <th>Size</th>
        <th>Color Name</th>
        <th>Quantity</th>
    </tr>";
    $pplresult = mysql_query("SELECT * FROM repplac WHERE Uname = '{$_SESSION['username']}')");   
    while($row = mysql_fetch_assoc($pplresult)){ 
        $body .= "<tr>
                <td>" . $row['Sname'] ."</td>
                <td>" . $row['Pname'] ."</td>
                <td>" . $row['Psize'] ."</td>
                <td>" . $row['Pcolour'] ."</td>
                <td>" . $row['Pquantity'] ."</td>
            </tr>";
    }

    $body .="</table></body></html>";
    //Send email
    $to = $email; 
    $subject = "YOUR ORDER LIST FROM REACHEASY"; 
    $headers = "From: donotreply@rapsody.co.uk\r\n";  
    $headers  .= 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    mail($to,$subject,$body,$headers);
    //Transfer records to wishlist 
    $transfer = mysql_query("INSERT INTO wishlist (SELECT  * FROM repplac WHERE Uname = '{$_SESSION['username']}')")or die(mysql_error());
    // Delete temporary records if the above query was successful:
    if($transfer !== false){
        $deletetable = mysql_query("DELETE FROM repplac WHERE Uname = '{$_SESSION['username']}'");
    }
}
redirect_to('youraccount.php'); 
?> body

4 个答案:

答案 0 :(得分:3)

显示第二个警告,因为显示了第一个警告。当显示第一个警告时,它会向浏览器创建输出,使服务器创建标题,然后您就不能再修改会话。

修复orderpplac.php第53行的第一个mysql警告,其余的将自行修复。

答案 1 :(得分:0)

确保文件:

"include/session.php"
"include/dataconnect.php"
"include/functions.php"

没有任何尾随空格。

发送标题前必须没有输出。

在结束?>后查找空格或新行,或者更好的是,不要关闭这些文件中的<?php标记。

答案 2 :(得分:0)

这里有很多类似的问题。

如果您向浏览器发送内容,例如。使用echo或print命令(如果显示任何通知或警告),您也无法修改标题信息。

尝试禁用错误报告(在文件顶部添加error_reporting(0))或尝试使用输出缓冲,阅读有关ob_start,ob_end_clean等的更多信息。

答案 3 :(得分:0)

没有session_start(),它应该在<?php

之后

如果你在session.php中有session_start(),你试图从每个包含文件的末尾删除?>