我正在尝试从我的数据库向所选用户发送电子邮件。我执行选择查询,然后使用电子邮件地址的结果发送邮件。
代码:
foreach($stmt->fetchAll() as $result)
{
$mail = $result['email'];
//Email information
$to_email = "$mail";
$from_email = "myemail@mysite.com";
$subject = "Subject";
$comment = "Content"
mail($to_email, "$subject", $comment, "From: Website <" . $from_email . ">");
}
它可以工作,但会向每个用户发送多封电子邮件。例如。如果选择了10个用户,则每个用户收到10封电子邮件。我知道这是因为foreach
,我也尝试了while
。但我不知道如何解决。
答案 0 :(得分:0)
这不是fetchAll()的工作原理。它会为您提供一个包含查询中所有行的结果数组。因此,如果您使用foreach($stmt->fetchAll() as $result)
,您将在所有结果上循环多次。您需要获取所有结果,然后循环它们。
$results = $stmt > fetchAll ();
foreach (results as $result) {
...
}
或在循环中使用fetch()。
while (($result = $stmt -> fetch ()) !== false) {
...
}