mysql_fetch_array()不起作用

时间:2011-12-08 05:18:24

标签: php mysql email

  

可能重复:
  PHP: mysql_fetch_array() expects parameter 1 to be resource, boolean given

我正在尝试将电子邮件发送到数据库中的地址。地址分为两部分:用户名(又名'数字')和@ something.com(又名'运营商')。所以电子邮件地址应该是'数字'。 '载体'

我的代码如下。邮件功能可以独立工作(不在循环中)。我得到的错误信息是“mysql_fetch_array()期望参数1是资源,第15行的home / username / public_html / script.php中给出的布尔值”

#!/usr/bin/php
<?
    require_once("PHPMailer/class.phpmailer.php");

    // connect to database
    mysql_connect("localhost", "username", "password");
    mysql_select_db("username_finalproject_Alerts");

    // prepare query
    $sql = "SELECT number, carrier FROM Alerts";
    // execute query
    $result = mysql_query($sql);
    while ($row = mysql_fetch_array($result))
    {
        //generate email address
        $email = $row['number'] . $row['carrier'];

        // send mail

        $mail = new PHPMailer();
        $mail->IsSMTP();
        $mail->Host = "private stmp address";
        $mail->ContentType = 'text/plain';
        $mail->IsHTML(false);
        $mail->SetFrom("private email address");
        $mail->AddAddress($email);
        $mail->Subject = "TRY 1";
        $mail->Body = "testing 1 2 3";
        if ($mail->Send() === false)
            die($mail->ErrorInfo . "\n");
    }

?>

5 个答案:

答案 0 :(得分:3)

您的查询一定有问题,您可以测试一下吗?

也许你可以尝试捕捉错误

if(!$result) { echo mysql_error(); }

答案 1 :(得分:0)

除非您登录数据库是&#34;用户名&#34;你的密码是&#34;密码&#34;我想你可能意味着

mysql_connect("localhost", $username, $password);

不确定此代码是否是您的代码,或者您刚刚更改了隐私权,但认为可能值得指出。

答案 2 :(得分:0)

为了方便您查询,您还可以使用:CONCAT(number, carrier),它为您提供单个结果中两行的组合结果,

第二个全部建议使用mysql_query($sql) or die('Error in Query!<br>' . mysql_error());

因此,如果您的查询中出现错误,那么您将通过mysql_error()

获取错误详细信息

答案 3 :(得分:0)

检查mysql_num_rows($rows)>0     

    // connect to database
    mysql_connect("localhost", "username", "password");
    mysql_select_db("username_finalproject_Alerts");

    // prepare query
    $sql = "SELECT number, carrier FROM Alerts";
    // execute query
    $result = mysql_query($sql);
    if(mysql_num_rows($result)>0) {
    while ($row = mysql_fetch_array($result))
    {
        //generate email address
        $email = $row['number'] . $row['carrier'];

        // send mail

        $mail = new PHPMailer();
        $mail->IsSMTP();
        $mail->Host = "private stmp address";
        $mail->ContentType = 'text/plain';
        $mail->IsHTML(false);
        $mail->SetFrom("private email address");
        $mail->AddAddress($email);
        $mail->Subject = "TRY 1";
        $mail->Body = "testing 1 2 3";
        if ($mail->Send() === false)
            die($mail->ErrorInfo . "\n");
    }
}

?>

答案 4 :(得分:-2)

像这样写

$email = $row[0] . $row[1];