2012-02-13 62 views
1

我有这些错误(我检查了第5行,并且找不到任何白线和sql在线。我检查了拼写和语法,它们没问题。)在修改HTTP标头信息时出错

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: [email protected]\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 
+0

禁用错误报告(代之以记录),则警告将消失(并且由于输出是第一次警告,您不再发送输出)。请参阅http://php.net/manual/en/book.errorfunc.php - 请注意,您仍然需要查看错误日志并修复您的应用程序。 – hakre 2012-02-13 14:12:52

+0

@hakre:我知道禁用通知,但警告太重要,请禁用它们。它总是更好地解决问题比隐藏它 – 2013-08-17 15:47:17

+0

@TomaszBanasiak:我写了什么来禁用这些?我在哪里写过通告和严格错误并不重要? – hakre 2013-08-17 16:12:17

回答

3

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

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

0

确保文件:

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

没有任何尾随空格。

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

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

0

这里有很多类似的问题。

如果你发送了一些东西给浏览器,例如。使用回声或打印命令(如果有任何通知或警告显示),你不能修改标题信息。

尝试禁用错误报告(添加使用error_reporting(0)在你的文件的顶部)或输出缓冲试试,了解更多关于ob_start,ob_end_clean等

0

没有session_start(),它应该是第一个后<?php

如果你有session_start()里面要包括尝试从每个月底删除?> session.php文件包含的文件