Mysql PHP推荐

时间:2014-04-17 19:51:29

标签: php mysql email

我根据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,然后发送到第二封电子邮件,依此类推用户。有人能指出我的方向吗?

2 个答案:

答案 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