while loop, postmarkapp, while loop sent it weird?
When the e-mail sent, it sent the e-mail X amount of times to each person, for example:
Bob, Susan, Joe, all had inactive sites.
When the thing looped, it sent bob an e-mail, but in the e-mail the body was all 3 peoples e-mails.
What have I done wrong?
Is it because I have used $body .=
and then not unset it after the e-mail was sent?
Here is my code:
$query = mysql_query("SELECT * FROM `sites` WHERE `active` = '1' AND `banned` = '0'", $link);
while ($result = mysql_fetch_array($query)){
$time = time();
$adayago = $time - 86400;
$logQ = mysql_query("SELECT * FROM `logs` WHERE `site` = '" . $result['id'] . "' AND `type` = 'in' AND `time` > '" . $adayago . "'", $link);
$logR = mysql_fetch_array($logQ);
$logNR = mysql_num_rows($logQ);
if ($logNR > 1){
// has sent a visit in the last 24 hours
// do nothing
}else{
// has not send a visit in the last 24 hours
$userQ = mysql_query("SELECT * FROM `users` WHERE `id` = '" . $result['owner'] . "'", $link);
$userR = mysql_fetch_array($userQ);
mysql_query("UPDATE `sites` SET `active` = '0' WHERE `id开发者_如何学编程` = '" . $result['id'] . "' LIMIT 1", $link);
$subject = "[ALERT] Your MySite.com listing has been deactivated!";
$body .= "Hi there,\n\n";
$body .= "Your listing for " . $result['url'] . " has been deactivated.\n\n";
$body .= "Your listing has been deactivated because you have not received any votes within the last 24 hours.\n\n";
$body .= "You must add our button, our link or integrate our vote link into your site and get your members to vote on your topsite listing. Doing this will allow you to stay as an active listing and receive traffic from us.\n\n";
$body .= "If you have forgotten how to send your members to your vote link, you can visit this page: http://www.mysite.com/vote-details/" . $result['id'] . ".html to learn how to do it.\n\n";
$body .= "If at any time you need help, please just reply to this e-mail, we are available 12 hours a day, 7 days a week. We would be happy to assist you with setting your vote link up on your website.\n\n";
$body .= "Kind regards,\nKyle R - MySite CEO\nhttp://www.mysite.com";
$newPostmark = new Mail_Postmark();
$newPostmark->addTo($userR['email'], "TGDb Member")
->subject($subject)
->messagePlain($body)
->send();
}
}
Yes, change this $body .= "Hi there,\n\n";
to
$body = "Hi there,\n\n";
Yes, you are correct. Just reset the $body in the beginning of the loop, like this:
...
while ($result = mysql_fetch_array($query)){
$body = '';
...
This will also save you from a E_NOTICE error when $body is appended to the first time.
精彩评论