PHP - 如何将查询结果放入数组?

时间:2010-11-12 04:53:59

标签: php arrays

我试图找出如何将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;
}
?>

3 个答案:

答案 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'];
}