发送多封邮件时出错,应该只发送一封

Error send multiple emails, should send one only

大家好,我需要一些帮助...

我有一个小 php 脚本可以检查数据库是否为真,如果是则调用其他 php 并发送电子邮件,如果不是则什么也不做。 它有效,但他检查数据库,如果发现 3 个或更多的真实,他发送 3 个或更多的电子邮件:S 今天我发现了 1700+/- 邮件要阅读。 你能帮我发一封邮件吗?

谢谢

<?php

include'database.php';
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$now = date("Y-m-d");
$sql = "SELECT * FROM on_form_9 WHERE dias = '0'";
$diferencial_tempo = "UPDATE on_form_9 SET dias = DATEDIFF (actualizacao, NOW())";

if ($conn->query($diferencial_tempo) === TRUE) {
    echo "DATA OK";
  echo( " --- ");
} else {
    echo "DATA ERRO" . $conn->error;
}

        $result = $conn->query($sql);
            if ($result->num_rows > 0) {
                while($row = $result->fetch_assoc()) {

                    include'baterias_email.php';
    }
} else {
    echo "0 e-mails enviados";
}
$conn->close();
?>

按以下方式更改您的代码。由于我现在不知道 baterias_email.php 做什么,您可以更改该脚本以便根据需要从数据库中获取数据。您将拥有数组 $result 中的所有行。

<?php

include'database.php';
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
$now = date("Y-m-d");
$sql = "SELECT * FROM on_form_9 WHERE dias = '0'";
$diferencial_tempo = "UPDATE on_form_9 SET dias = DATEDIFF (actualizacao, NOW())";

$sendEMail = false;
$result = [];
if ($conn->query($diferencial_tempo) === TRUE) {
    echo "DATA OK";
  echo( " --- ");
} else {
    echo "DATA ERRO" . $conn->error;
}

        $result = $conn->query($sql);
            if ($result->num_rows > 0) {
                while($row = $result->fetch_assoc()) {
                    //collect the data you need here and set a flag
                    $result[] = $row;
                    $sendEMail = true;
    }
} else {
    echo "0 e-mails enviados";
}


if ($sendEMail === true){
    //change your baterias_email.php in order to use the array of rows $result if you need the data
    include 'baterias_email.php';
}
$conn->close();

希望对您有所帮助

已修复,不知道如何让我逃脱 LOL

if ($conn->query($diferencial_tempo) === TRUE) {
    echo "DATA OK";
    include'baterias_email.php';
} else {
    echo "DATA ERRO" . $conn->error;
}

删除其余部分:)