2012-05-05 2 views
0

PHP У меня есть этот код:как эхо населенного массива

<?php 
$result_array1 = array(); 
$sql1 = "SELECT * FROM `test_thing`"; 
$result1 = mysql_query("$sql1") or die($sql1.mysql_error()); 
while($row1 = mysql_fetch_array($result1)) 
    { 
     $result_array1[] = $row1['email']; 
    } 
$sentmail = mail($result_array1,$subject,$message,$header); 
?> 

Моя проблема заключается в том, что если поместить функцию почты внутри цикла, пользователь получает много писем вместо одного, и если поместить его из цикла не отправляется электронное письмо. Моя цель - отправить только 1 письмо каждому пользователю, но это письмо должно содержать в нем много смешанных писем. Я читал на других форумах, что это можно сделать с помощью массивов. Возможно, с кодами есть ошибка. Любые предложения?

Благодаря

+0

Не должно быть 'mysql_fetch_assoc' вместо' mysql_fetch_array'? –

+1

@Shedal Это может быть, но по умолчанию 'mysql_fetch_array()' получает _both_ ассоциативные и числовые клавиши, поэтому это отлично работает. –

ответ

1

попробовать этот

<?php 
$result_array1 = array(); 
$sql1 = "SELECT * FROM `test_thing`"; 
$result1 = mysql_query("$sql1") or die($sql1.mysql_error()); 
while($row1 = mysql_fetch_array($result1)) 
    { 
     $result_array1[] = $row1['email']; 
    } 
$email = implode(",",$result_array1); // $email = "[email protected],[email protected],[email protected]" 
$sentmail = mail($email,$subject,$message,$header); 
?> 

Первый параметр mail может быть один электронный идентификатор или идентификаторы электронной почты через запятую. Это означает, что вы можете отправить электронное письмо нескольким пользователям, используя только один вызов функции.

+0

будет ли он отправлен уникальному пользователю? –

+0

, о котором идет речь, это писатель «Моя цель - отправить только 1 письмо каждому пользователю» –

+0

@MoyedAnsari: он отправит ** только одному электронному письму каждому пользователю ** – Nauphal

0

Просто используйте следующий MySQL запрос:

SELECT DISTINCT email FROM `test_thing` 

Он будет возвращать только уникальные адреса электронной почты из таблицы. Таким образом, вы можете использовать mail() в цикле и не беспокоиться о дублированных адресах электронной почты.

0

IMHO $ для параметра в почтовой функции только одна поддержка по электронной почте. Если вы хотите отправить много писем, измените свои $ headers и установите Bcc; пример кода:

$headers.="Bcc: "; 
while($count < $count_recip){ 
$headers.=$recip[$count].", "; 
$count ++; 
} 
0

Это работает для меня:

$result_array1 = array(); 
$sql1 = "SELECT DISTINCT * FROM `test_thing` GROUP BY `user_id`"; 
$result1 = mysql_query("$sql1") or die($sql1.mysql_error()); 

while($row1 = mysql_fetch_array($result1)) 
{ 
    $result_array1[] = $row1['EmailAddress']; 
} 

$email = implode(",",$result_array1); 

Я изменил некоторые ответы вместе.

Не будет дублированных электронных писем, по крайней мере, не было для меня.

+0

Если вы используете EmailAddress из набора результатов, вы можете просто «SELECT DISTINCT EmailAddress FROM ....», что гарантирует, что вы не получите повторяющиеся записи для EmailAddress. – andrewsi

Смежные вопросы