【发布时间】:2013-03-19 21:35:51
【问题描述】:
我正在尝试编写一些 PHP 代码,通过电子邮件向我数据库中的每个用户(大约 500 个)发送他们的用户名。我已经成功地提取了每个用户的电子邮件地址和用户名,并将它们存储在一个数组中。但是,我不知道如何通过电子邮件向每个用户发送他们各自的用户名。我很确定我需要使用foreach 循环来执行此操作,但我没有运气。
这是我所拥有的。
<?php
include('databaseConn.php');
$query = mysql_query("SELECT * FROM staff");
$emailArray;
while ($row = mysql_fetch_array($query)) {
$emailArray[] = array($row['email']=>$row['username']);
}
print_r($emailArray); //This associative array now contains each username along with their respective email address.
?>
==***********=== 带邮件功能
<?php
include('functions/core.php');
$query = mysql_query("SELECT * FROM users");
$emailArray;
while ($row = mysql_fetch_array($query)) {
$emailArray[] = array($row['email']=>$row['username']);
}
foreach($emailArray as $email => $username) {
echo $username; // outputs the indexes.
$subject = 'Accoutn Details';
$message = 'This email contains your login details.<br/><br/>
<b>Username: '.$username.'</b><br/>
<br/><br/>Kind regards,<br/>';
$headers = 'From: noreply@xxxxx.co.uk' . "\r\n" .
'Reply-To: noreply@xxxxx.co.uk' . "\r\n" .
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
mail($emailAddress, $subject, $message, $headers);
}
//print_r($emailArray);
?>
【问题讨论】:
-
请注意,
mysql_*函数已被弃用(请参阅red box)。 -
为什么不在 while 循环中发送邮件,无需 lop 两次。如果您在共享主机上,一次 500 个可能会成为问题。
-
manual page中有几个例子。
标签: php foreach associative-array