首页 > 解决方案 > 我如何将所有行从 php 到电子邮件?

问题描述

我编写了一个脚本,该脚本应该从数据库中选择所有用户,然后选择他们评论的所有匹配项并将其邮寄。但它只发送选择的最后一个匹配项。

require 'connection.php';
$query = mysqli_query($conn, "SELECT * FROM tipuser");


foreach($query as $email){
    $username = $email['id'];
    $datumted = date("Y-m-d");
    $sql = mysqli_query($conn, "SELECT * FROM zapasy 
                                  WHERE komentator1 = '$username' AND datum = '$datumted' 
                                    OR komentator2 = '$username' AND datum = '$datumted'");

    while ($xx = mysqli_fetch_assoc($sql)) { 
        $datum = $xx['datum'];
        $projekt = $xx['projekt'];

        $projektquery = mysqli_query($conn, "SELECT * FROM projekt 
                                             WHERE id = '$projekt'");
        $projektpole = mysqli_fetch_array($projektquery);
        $projektx = $projektpole['name'];

        $stream = $xx['stream'];
        $tv = $xx['televize'];
        $team1 = $xx['domaci'];
        $team2 = $xx['hoste'];
        $cas = $xx['cas'];   
        $message = "$datum | $cas | $team1 v $team2 | $projektx | $stream | $tv \n";
    }

    $datex = date('d/m/Y');
    $to = $email['name'];
    $subject = "Vaše zápasy $datex";
    $headers = 'From: admin@sportsradio.cz';
    mail($to, $subject, $message, $headers);
}

$message是它邮寄的文本我需要在 1 封邮件中邮寄所有选定的匹配项。

标签: phpemail

解决方案


您正在$message用 while 循环的每次迭代覆盖您的。最后一个是您在邮件中收到的。您应该附加到$message每次迭代。

require 'connection.php';
$query = mysqli_query($conn, "SELECT * FROM tipuser");

foreach($query as $email){
    $message = ''; // "init" $message
    $username = $email['id'];
    $datumted = date("Y-m-d");
    $sql = mysqli_query($conn, "SELECT * FROM zapasy 
                                  WHERE komentator1 = '$username' AND datum = '$datumted' 
                                    OR komentator2 = '$username' AND datum = '$datumted'");

    while ($xx = mysqli_fetch_assoc($sql)) { 
        $datum = $xx['datum'];
        $projekt = $xx['projekt'];

        $projektquery = mysqli_query($conn, "SELECT * FROM projekt 
                                             WHERE id = '$projekt'");
        $projektpole = mysqli_fetch_array($projektquery);
        $projektx = $projektpole['name'];

        $stream = $xx['stream'];
        $tv = $xx['televize'];
        $team1 = $xx['domaci'];
        $team2 = $xx['hoste'];
        $cas = $xx['cas'];   
        $message .= "$datum | $cas | $team1 v $team2 | $projektx | $stream | $tv \n"; // .= appends to $message
    }

    $datex = date('d/m/Y');
    $to = $email['name'];
    $subject = "Vaše zápasy $datex";
    $headers = 'From: admin@sportsradio.cz';
    mail($to, $subject, $message, $headers);
}

字符串运算符信息:https ://www.php.net/manual/en/language.operators.string.php


推荐阅读