如何在php中搜索和组合从mysql提取的数据以发送
我有一个mysql数据库,其中存储了一个表,其中包含一些关于个人信息的列如何在php中搜索和组合从mysql提取的数据以发送,php,mysql,email,foreach,phpmailer,Php,Mysql,Email,Foreach,Phpmailer,我有一个mysql数据库,其中存储了一个表,其中包含一些关于个人信息的列 反对意见1(英国) 用户名 电子邮件 服务 发送 使用phpmailer的php代码,我可以连接到db,从sql查询中提取我需要的信息,并通过foreach函数为每个人发送电子邮件,在正确发送每封电子邮件后,“发送”列的数据从0更新到1。。。所有这些都可以正常工作,但有可能有一些人对多个自己的“object1”使用相同的“电子邮件”,在这种情况下,每行都会向他们发送一封电子邮件 例如,如果一个人有电子邮件aa@aa.i
- 反对意见1(英国)
- 用户名
- 电子邮件
- 服务
- 发送
<?
$mail = new PHPMailer;
$result = mysqli_query($mysql, 'SELECT * FROM db WHERE service LIKE \'%something%\' AND sent = 0 ORDER BY object1 LIMIT 0 , 30');
foreach ($result as $row) {
$mail->addAddress($row['email'], $row['object1']);
/* i use it to use an external .html file to send email and replace vairables in it */
$message = file_get_contents('template/temaplate.html');
$message = str_replace('%email%', $row['email'], $message);
$message = str_replace('%object1%', $row['object1'], $message);
//Set the message
$mail->MsgHTML($message);
$mail->AltBody = strip_tags($message);
if (!$mail->send()) {
echo "Mailer Error (" . str_replace("@", "@", $row["email"]) . ') ' . $mail->ErrorInfo .;
break; //Abandon sending
} else {
echo "Message sent to :" . $row['object1'] . ' (' . str_replace("@", "@", $row['email']) .;
//Mark it as sent in the DB
mysqli_query(
$mysql,
"UPDATE db SET sent = true WHERE object1 = '" .
mysqli_real_escape_string($mysql, $row['object1']) . "'"
);
}
// Clear all addresses and attachments for next loop
$mail->clearAddresses();
$mail->clearAttachments();
}
?>
您可以通过电子邮件进行订购,而不是通过object1进行订购,这样具有相同电子邮件的行将一起出现
$prev_email = null;
foreach ($result as $row) {
if ($row['email'] === $prev_email) {
// skip, but may print some warning etc.
// or check other conditions about object1
continue;
}
....
$prev_email = $row['email'];
}
这样,每封电子邮件只收到一条消息。但是,如果您关心在这些电子邮件中使用哪个object1,则可能需要微调逻辑。一些合理的代码缩进将是一个好主意。它帮助我们阅读代码,更重要的是,它将帮助您为自己的利益调试代码。您可能会被要求在几周/几个月内修改此代码,最终您将感谢我。您的脚本有可能查看使用过程中发生的情况。您自己似乎没有尝试编写此代码。所以免费编码资源