我根据mysql表数据建立一个提醒,我的表看起来像
Task Desc Name Email
1 Task1 John John@mail.com
2 Task2 Eve Eve@mail.com
3 task3 John John@mail.com
4 Task4 Mark Mark@mail.com
5 task5 John John@mail.com
在我的php中
$query = "SELECT desc, name, email FROM table";
$result_query = mysql_query($query) or die("Error in query: $query " . mysql_error());
$num_results_query = mysql_num_rows($result_query);
if ($num_results_trad > 0) {
ob_start();
HERE I WRITE MY EMAIL
$Buffer = ob_get_contents();
// get the output
ob_end_clean();
之后我发送电子邮件。现在我的问题是我需要向每个用户发送一封电子邮件,并将所有任务分配给他。如果我做一个循环,我将为每个任务或行发送一封电子邮件,我想要做的是发送一封电子邮件,例如发送给John的任务1 3和5,然后发送到第二封电子邮件,依此类推用户。有人能指出我的方向吗?
答案 0 :(得分:3)
你必须循环这两次,一次聚合所有任务,然后一次发送电子邮件。在非工作的php伪代码中:
$taskForUser = array();
// your query
$query = "SELECT desc, name, email FROM table";
$result_query = mysql_query($query) or die("Error in query: $query " . mysql_error());
$num_results_query = mysql_num_rows($result_query);
foreach ($query as $result) {
$taskForUser[$result['Email']][] = $result;
}
foreach ($taskForUser as $userTasks) {
// email $userTasks at once.
}
答案 1 :(得分:0)
您可以使用GROUP_CONCAT
即
SELECT GROUP_CONCAT(DISTINCT desc SEPARATOR ', '), name, email FROM table GROUP BY email