【问题标题】:Send Mail to different users where E-Mail-Adresses are from Mysql将邮件发送给电子邮件地址来自 Mysql 的不同用户
【发布时间】:2019-08-18 18:57:21
【问题描述】:

我想从带有条件的表中获取所有行,然后向分配的用户发送电子邮件。表中有 2 个用户。如果我将 sql 语句放在 sql 语句中它不起作用,只有第一个用户会收到邮件和邮件。我确信这很容易,但我是 php 和 mysql 初学者,所以请帮助我。

表中有 2 个用户。

<?php 
require'../includes/database.php'; 

    $sql = "SELECT * FROM users";  
$result = $conn->query($sql);  

if ($result->num_rows > 0) {  

    // output data of each row  
    while($row = $result->fetch_assoc()) {  
        $fname = $row["fname"];  
        $nname = $row["lname"];  
        $mailadresse = $row["email"];  
        $user2 = $fname." ".$nname;  
        echo $user2;  

        $sql = "SELECT * FROM iks_open, users WHERE Datum <= '$neudate' AND  pverantwortung = '$user2'";  
        $result = $conn->query($sql);  

        if ($result->num_rows > 0) {  
            $mailhost       = "$server";  //SMTP Host name  
            $mailsmtpauth   = true;  
            $mailusername   = "$user"; // SMTP Login  
            $mailpassword   = "$pass"; // SMTP Password  


            require_once('../includes/Mailer/class.phpmailer.php');  
            require_once('../includes/Mailer/class.smtp.php');  


            $mail = new PHPMailer();   

            $mail->IsSMTP();
            $mail->Host       = $mailhost;  
            $mail->Port       = $port;  
            $mail->SMTPDebug  = 1; // Kann man zu debug Zwecken aktivieren  
            $mail->SMTPAuth   = true;  
            $mail->Username   = $mailusername;  
            $mail->Password   = $mailpassword;  
            $mail->SMTPSecure = $sec;  


            $frommail = "$email";  
            $mail->SetFrom($frommail, 'IKS-System');  

            $address = "$mailadresse";  
            $mail->AddAddress($address);  

            $mail->Subject = "Offene IKS-Aufgaben";  
            $mail->Body = "Sie haben offene Aufgaben. Bitte einloggen und erledigen";  

            if(!$mail->Send()) {  

            $lcontact = 1;  
            } else {  
            $lcontact = 2;  

            }  

            }else {  
                echo "Alles gut";  
            }  

    }  
}  


?>  

【问题讨论】:

    标签: php mysql mysqli


    【解决方案1】:

    您正在覆盖 while 语句中的 $result 变量。小心你的变量,你不会有这样的麻烦。

    【讨论】:

    • 如果你发现问题的根源,试着给出一个代码解决方案的snipet。这对 OP 来说很容易。
    • 是的,你是对的,但没有必要这样做。这不是逻辑问题。他必须重命名他的变量。我认为他可以不用举例。
    • 不管怎样,在看到你的答案之前,我已经为他准备好了。
    【解决方案2】:

    我认为,在 while 循环中发生的数据库获取正在覆盖 $result 对象。

    试试这个

    <?php 
    require'../includes/database.php'; 
    
    $sql = "SELECT * FROM users";  
    $result = $conn->query($sql);  
    
    if ($result->num_rows > 0) {  
    
    // output data of each row  
    while($row = $result->fetch_assoc()) {  
        $fname = $row["fname"];  
        $nname = $row["lname"];  
        $mailadresse = $row["email"];  
        $user2 = $fname." ".$nname;  
        echo $user2;  
    
        $query = "SELECT * FROM iks_open, users WHERE Datum <= '$neudate' AND  pverantwortung = '$user2'";  
        $details = $conn->query($sql);  
    
        if ($details->num_rows > 0) {  
            $mailhost       = "$server";  //SMTP Host name  
            $mailsmtpauth   = true;  
            $mailusername   = "$user"; // SMTP Login  
            $mailpassword   = "$pass"; // SMTP Password  
    
    
            require_once('../includes/Mailer/class.phpmailer.php');  
            require_once('../includes/Mailer/class.smtp.php');  
    
    
            $mail = new PHPMailer();   
    
            $mail->IsSMTP();
            $mail->Host       = $mailhost;  
            $mail->Port       = $port;  
            $mail->SMTPDebug  = 1; // Kann man zu debug Zwecken aktivieren  
            $mail->SMTPAuth   = true;  
            $mail->Username   = $mailusername;  
            $mail->Password   = $mailpassword;  
            $mail->SMTPSecure = $sec;  
    
    
            $frommail = "$email";  
            $mail->SetFrom($frommail, 'IKS-System');  
    
            $address = "$mailadresse";  
            $mail->AddAddress($address);  
    
            $mail->Subject = "Offene IKS-Aufgaben";  
            $mail->Body = "Sie haben offene Aufgaben. Bitte einloggen und erledigen";  
    
            if(!$mail->Send()) {  
    
            $lcontact = 1;  
            } else {  
            $lcontact = 2;  
    
            }  
    
            }else {  
                echo "Alles gut";  
            }  
    
    }  
    

    }

    ?>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-06
      • 1970-01-01
      • 2016-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      相关资源
      最近更新 更多