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条)

报告相同问题?

悬赏问题

  • ¥15 求解 yolo算法问题
  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝