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

标签 php mysql while-loop

我希望能够将此人的姓名放入电子邮件中。但是我不知道如何在循环外保留值。另外,我想知道如果结果不止一个,这是否可行。

这是 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']."\n";
        $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."\r\n" .
    'Reply-To:'.$_POST['email']."\r\n" .
    "Content-Type: text/html; charset=iso-8859-1\n".
    'X-Mailer: PHP/' . phpversion();
    mail($mail_to, "Congratulations ".$name."!", $message, $headers);
}

在上面的例子中,邮件从不读取他们的名字,因为这个值似乎在 while 循环之外被遗忘了。有人可以帮助我吗?

最佳答案

目前,您的代码会在 while 循环的每次迭代中覆盖存储在 $mail_to 中的电子邮件 ID。因此,它将只有最后一个用户的电子邮件 ID。并且您需要每个用户的名称(存储在 $name 中并在函数中使用)。只要找到用户,您就需要发送电子邮件。试试这个:

// 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']."\n";
        $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."\r\n" .
    'Reply-To:'.$_POST['email']."\r\n" .
    "Content-Type: text/html; charset=iso-8859-1\n".
    'X-Mailer: PHP/' . phpversion();
    mail($mail_to, "Congratulations ".$name."!", $message, $headers);
}

关于php - 如何让 php 在循环外回显值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27994834/

相关文章:

mysql - 安装字段权限模块后 Dkan Drupal 错误

c - 蜂鸣命令正在破坏我的功能

c++ - while 循环不会在 C++ 中中断

Python:更改 'for' 循环的条件

php - 通过 PHP Mailer 使用实时服务器 SMTP 服务器发送电子邮件不起作用

php - 发送post请求并且不等待回复并继续php脚本

sql - MySQL:列包含单词列表中的单词

php - 已部署的 Yii 应用程序无法正确构建域子文件夹的 url

php - 使用define()存储数据库连接详细信息是好是坏?

php - Laravel MySQL 数据库设置错误