2013-05-15 37 views
0

我正在嘗試調試我正在處理的項目的新聞通訊郵件腳本。這對PHP Mailer來說工作得很好,但是我最終把我的郵件修改爲Swift Mailer,並且因爲我一直都遇到了最奇怪的問題。Mysqli讀取數組警告,無法調試

我不斷收到以下警告,while循環的第一次迭代之後(一個電子郵件是在MySQL的結果集發送到第一E-mail地址,然後我得到這樣的警告):

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, integer given in /home1/username/public_html/domain/newslettermailer.php on line 15 

這是我newlettrmailer.php腳本:

include('inc/connect.inc.php'); 

    $query = "SELECT * FROM `newsletter`"; 

    $result = mysqli_query($mysqli, $query); 

    $status = Array(); 

    require('mailer/swift_required.php'); 


    while($row = mysqli_fetch_array($result)){ 
     $email = $row['email']; 

     echo $email . " GOOD<br/>"; 

     // Create the Transport 
     $transport = Swift_SmtpTransport::newInstance('mail.domain.com', 25) 
     ->setUsername('[email protected]') 
     ->setPassword('password'); 

     // Create the Mailer using your created Transport 
     $mailer = Swift_Mailer::newInstance($transport); 

     $mailTo = Array(); 
     $mailTo[] = $email; 


    $message = Swift_Message::newInstance('Newsletter Test!') 
     ->setFrom(array('[email protected]' => 'Subject')) 
     ->setTo($mailTo); 

    $body = '<strong style="text-decoration:underline;">Test</strong>'; 
     $message->setBody($body,'text/html'); 


      // Send the message 
     $result = $mailer->send($message); 



     if($result==0) 
     { //MESSAGE FAILED 
      $status .= $email . ': <span style="color:red; font-weight:bold;">Fail</span><br/>'; 
     } 
     else 
     { //SUCCESS! 
      $status .= $email . ': <span style="color:green; font-weight:bold;">Success!</span><br/>'; 
     } 

    } 

在嘗試調試,我修改了上面的腳本爲以下,並得到了不是錯誤,沒有警告什麼那麼,和所有電子郵件打印出:

  include('inc/connect.inc.php'); 

     $query = "SELECT * FROM `newsletter`"; 

     $result = mysqli_query($mysqli, $query); 

     $status = Array(); 

     require('mailer/swift_required.php'); 


     while($row = mysqli_fetch_array($result)){ 
      echo $row['email'] . '<br/>'; 

     } 

我一直在嘗試調試這一段時間,現在真的很困難,我很欣賞任何有關這種情況的建議。

非常感謝提前!

回答

7

你重複使用變量$result

$result = $mailer->send($message); 

所以在while循環的第二次迭代,它試圖傳遞到mysqli_fetch_array()而不是從mysqli_query()結果回報。

爲這第二個結果使用一個不同的變量。

+0

+1,謝謝你的回覆。我很感激!這確實是問題:) – AnchovyLegend

+0

由於問題發生在第二次迭代中,尋找的顯而易見的事情是對循環內變量的賦值,不是嗎? – Barmar

+0

對我來說不是那麼明顯,雖然它應該是,你是對的。出於某種原因,我認爲這是與mysql相關的。 – AnchovyLegend

相關問題