php - Mysqli fetch array 警告,无法调试

标签 php mysql mysqli swiftmailer

<分区>

我正在尝试为我正在处理的项目调试时事通讯邮件脚本。这曾经与 PHP Mailer 一起工作得很好,但是我最终将我的邮件程序更改为 Swift Mailer,因为我遇到了最奇怪的问题。

我不断收到以下警告,在 while 循环的第一次迭代后(一封电子邮件发送到 mysql 结果集中的第一个电子邮件地址,然后我收到此警告):

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('support@domain.com')
      ->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('support@domain.com' => '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/>';

        }

我已经尝试调试它很长一段时间了,但我真的很难解决这个问题,我很感激任何关于为什么会发生这种情况的建议。

非常感谢!

最佳答案

您正在重用变量 $result :

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

所以在 while 的第二次迭代中循环,它试图将其传递给 mysqli_fetch_array()而不是从 mysqli_query() 返回的结果.

为第二个结果使用不同的变量。

关于php - Mysqli fetch array 警告,无法调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16572640/

相关文章:

php - 使用 XPath 从 XML 获取标签名称

mysql - 数据库结构 - 两张表还是一张表?

PHP & mySQL : When exactly to use htmlentities?

php - 多个 MySql 插入和更新未按预期运行

php - 使用 php 从 mysql db 中查找数据间隙的日期

PHP json 编码 - 格式错误的 UTF-8 字符,可能编码不正确

php - 如何使用 PHP 的 include 连接到数据库

php - 在php中包含数据库连接文件

PHP如果我想回显表而不是foreach循环我该怎么办

asp.net - Web.config 影响共享主机帐户中的其他域