2017-05-19 62 views
0

我想從一個mysql查詢發送一封電子郵件給用戶,並在郵件的$ message(body)中包含另一列(僱員)表:發送電子郵件給有查詢和唯一列的多個用戶

所以[email protected]應該收到一封電子郵件,只有`employee1,和Employee2,employee3在email..etc ...

這個腳本,而不是將郵件每封電子郵件中的所有行。

`employee | email` 
`employee1,employee2,employee3 | [email protected]` 
`employee4,employee5,employee6 | [email protected]` 
`employee7,employee8,employee9 | [email protected]` 

Script: 
mysql_connect("localhost", "xx", "xx") or die(mysql_error()); 
mysql_select_db("Joomla") or die(mysql_error()); 

$query = sprintf("select GROUP_CONCAT(DISTINCT(e.`name`)) AS employee, 
m.name as manager, email, r.week,r.year,r.manager_approved, r.Date 
from peg_users e 
left JOIN peg_users m ON e.manager = m.id 
left JOIN project_tracker_tool_finance_report r ON m.id = r.manager 
where e.project_tracker_user = 1 AND r.manager_approved = 'NO' 
AND CONCAT(r.year,r.week,'') = YEARWEEK(NOW()) -2 
GROUP BY m.name 
order by m.name 
limit 2"); 
//$email = "[email protected]"; 
$result = mysql_query($query); 

while($row=mysql_fetch_array($result)) { 
$email = $row['email']; 
$from_email = "masked"; 
$emailcc = "masked"; 
//$emailcc = ""; 
$subject = "Project Time Tracker - Employees Overdue"; 
$headers = "From: $from_email" . "\r\n" . "CC: $emailcc"; 

$body .= " \n " 
."Following are the people whoes subscription will expire tomorrow"." \n "." 
\n " 
."First Name : ".$row['employee']." \n " 
."\n". "\n". "==============================". "\n"; 
} 

// send email 
if(mysql_num_rows($result) > 0) 
{ 

$send = mail($email, $subject, $body, $headers); 
} 
mysql_close($conn); 
+1

**警告**:如果您只是學習PHP,請不要學習過時的['mysql_query'](http://php.net/manual/en/function.mysql-query.php)接口。這很糟糕,並且已經在PHP 7中被刪除了。像[PDO不是很難學的東西](http://net.tutsplus.com/tutorials/php/why-you-should-be-using-php-pdo- for-database-access /)以及[PHP The Right Way](http://www.phptherightway.com/)等指南有助於解釋最佳實踐。確保**你的用戶參數[妥善轉義](http://bobby-tables.com/php),否則你將以嚴重的[SQL注入漏洞](http://bobby-tables.com/ )。 – tadman

+0

另外,如果這是一個Joomla安裝,爲什麼你不能通過Joomla API來做到這一點? – tadman

回答

0

您可以嘗試使用兩個sql查詢而不是使用一個。

在第一個查詢得到你想要的所有主要的電子郵件,如[email protected][email protected]

一旦你擁有所有這些電子郵件ID,然後執行第二個查詢獲取數據對於使用where子句和主電子郵件ID的郵件正文。

希望這會幫助你。

+0

我將如何將它引入while循環? – user2680315

相關問題