我试图找出如何将mysql查询结果放入可以在while循环外访问的数组中。这可能吗?
我正在玩的测试代码如下。我想发送电子邮件到数组中的电子邮件地址,而不在while循环中创建电子邮件代码。这样我就可以将数组结果注入到BCC字段中,并且使用mail()函数立即将其全部删除,而不是为每封电子邮件打开一个新的smtp连接 - 或者我认为。
<?php
if(isset($_POST['btnSendToSelected']) && isset($_POST['checked']))
{
$checked = array_map('intval',$_POST['checked']);
$email_list = implode(", ", $checked);
$get_emails = mysqli_query($conn, "SELECT UserName, Email FROM users WHERE UserId IN ($email_list)")
or die($dataaccess_error);
while($row = mysqli_fetch_array($get_emails))
{
$emails = array($row['Email']);
$emails_array = implode(", ", $emails);
}
// send the email here outside the while loop...
}
elseif(isset($_POST['btnSendToSelected']) && !isset($_POST['checked']))
{
$msg = $msg_error;
}
?>
答案 0 :(得分:4)
$emails_array = implode(", ", $emails);
您可以explode
此行,无论您想要获得数组。
// EDIT
看起来整个while
循环可以更好地处理。我建议
$emails = array();
while($row = mysqli_fetch_array($get_emails))
{
$emails[] = $row['Email']."|||".$row['Username'];
}
然后,您可以一次性获得$emails
数组中的所有信息。
|||
只是我选择的随机分隔符,您可以使用逗号或其他内容。或者,您可以将该条目设为二维数组,如
$emails[][0] = $row['Email'];
$emails[][1] = $row['Username'];
...虽然这个特定的代码可能不起作用,但这个想法会。然后,只需访问它:
echo "Username 99 is ".$emails[99][1];
答案 1 :(得分:2)
$emails_array = array();
while($row = mysqli_fetch_array($get_emails)) {
$emails_array[] = explode(", ", $row['Email']);
}
foreach($emails_array as $value) {
mail_function($value);
}
或者
while($row = mysqli_fetch_array($get_emails)) {
foreach(explode(", ", $row['Email']) as $value) {
mail_function($value);
}
}
答案 2 :(得分:1)
电子邮件仍存储在变量$ row中。和$ email ...你也可以这样做:
while($row = mysqli_fetch_array($get_emails))
{
mail($row['Email'],$subject,$message,$headers);
}
如果您想将电子邮件存储在数组中:
$emails = array();
while($row = mysqli_fetch_array($get_emails))
{
$emails[] = $row['Email'];
}