doulu4316 2015-01-17 00:25
浏览 44
已采纳

如何让php在循环外回显值?

I want to be able to put the name of the person in the email. But I don't know how to retain the value outside the loop. Also, I'm wondering if this will work if there is more than one result.

Here is the php:

// WHO HAS BEEN A MEMBER FOR ONE YEAR
function joinDateFilter(){
    $query = mysql_query("SELECT * FROM user WHERE date_joined = DATE_SUB(curdate(), INTERVAL 1 YEAR)");
    $mail_to = "";
    while ($row = mysql_fetch_array($query)){
        echo $row['name']." - ".$row['email']."
";
        $mail_to = $row['email'].", ";
        $name = $row['name'];
    }
    if (!empty($mail_to)){
        sendEmail($mail_to);
    }
}

// SEND EMAIL
function sendEmail($mail_to) {
    $from    = "webmaster@mydomain.com";
    $message = "Happy Anniversary!";
    $headers = 'From: '.$from."
" .
    'Reply-To:'.$_POST['email']."
" .
    "Content-Type: text/html; charset=iso-8859-1
".
    'X-Mailer: PHP/' . phpversion();
    mail($mail_to, "Congratulations ".$name."!", $message, $headers);
}

In that example above, the mail never reads their name, as the value seems to be forgotten outside of the while loop. Can someone help me?

  • 写回答

4条回答 默认 最新

  • dtwxt88240 2015-01-17 01:09
    关注

    Currently, your code overwrites the email id stored in $mail_to in each iteration of the while loop. So, it will have only the email id of the last user. And you need name of each user (stored in $name and used in the function). You need to send the email whenever a user is found. Try this:

    // WHO HAS BEEN A MEMBER FOR ONE YEAR
    function joinDateFilter(){
        $query = mysql_query("SELECT * FROM user WHERE date_joined = DATE_SUB(curdate(), INTERVAL 1 YEAR)");
        while ($row = mysql_fetch_array($query)){
            echo $row['name']." - ".$row['email']."
    ";
            $mail_to = $row['email'];
            $name = $row['name'];
            if (!empty($mail_to))
                sendEmail($mail_to, $name);
        }
    }
    
    // SEND EMAIL
    function sendEmail($mail_to, $name) {
        $from    = "webmaster@mydomain.com";
        $message = "Happy Anniversary!";
        $headers = 'From: '.$from."
    " .
        'Reply-To:'.$_POST['email']."
    " .
        "Content-Type: text/html; charset=iso-8859-1
    ".
        'X-Mailer: PHP/' . phpversion();
        mail($mail_to, "Congratulations ".$name."!", $message, $headers);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网
  • ¥15 Llama如何调用shell或者Python
  • ¥20 谁能帮我挨个解读这个php语言编的代码什么意思?