PHP MYSQL добавить несколько адресов электронной почты в цикл AddAddress while

Кто-нибудь, пожалуйста, укажите мне в правильном направлении. Я просмотрел здесь много постов на эту тему и, похоже, нашел много разных частей головоломки, но ни одна из них не собирается вместе. Я хочу отправить электронное письмо пользователям после того, как объявление будет добавлено в базу данных. Я не получаю никаких ошибок, но не получаю электронные письма. Если я жестко кодирую и адрес электронной почты в строке AddAddress, я получаю письмо, но массив просто не собирается. Любая помощь приветствуется.

public function create($category_id, $title, $description, $city, $price)
{
// clean the input to prevent for example javascript within the notes.
$category_id = \strip_tags($category_id);
$title = \strip_tags($title);
$description = \strip_tags($description);
$city = \strip_tags($city);
$price = \strip_tags($price);$sql = "INSERT INTO ads (category_id, user_id, title, description, city, price) VALUES (:category_id, :user_id, :title, :description, :city, :price)";
$query = $this->db->prepare($sql);
$query->execute(array(':category_id' => $category_id, ':user_id' => $_SESSION['user_id'], ':title' => $title, ':description' => $description, ':city' => $city, ':price' => $price));

$count =  $query->rowCount();
if ($count == 1) {
$user_email = '';
$sql = "SELECT user_email FROM users";
$query = $this->db->prepare($sql);
$query->execute(array(':user_email' => $user_email));
return $query->fetchAll();

while ($row = mysql_fetch_array($query)){
$to = $row['user_email'];

// create PHPMailer object here. This is easily possible as we auto-load the according class(es) via composer
$mail = new PHPMailer;

// please look into the config/config.php for much more info on how to use this!
if (EMAIL_USE_SMTP) {
// Set mailer to use SMTP
$mail->IsSMTP();
//useful for debugging, shows full SMTP errors, config this in config/config.php
$mail->SMTPDebug = PHPMAILER_DEBUG_MODE;
// Enable SMTP authentication
$mail->SMTPAuth = EMAIL_SMTP_AUTH;
// Enable encryption, usually SSL/TLS
if (defined('EMAIL_SMTP_ENCRYPTION')) {
$mail->SMTPSecure = EMAIL_SMTP_ENCRYPTION;
}
// Specify host server
$mail->Host = EMAIL_SMTP_HOST;
$mail->Username = EMAIL_SMTP_USERNAME;
$mail->Password = EMAIL_SMTP_PASSWORD;
$mail->Port = EMAIL_SMTP_PORT;
} else {
$mail->IsMail();
}

// build the email
$mail->From = EMAIL_AD_NOTIFICATION_FROM_EMAIL;
$mail->FromName = EMAIL_AD_NOTIFICATION_FROM_NAME;
$mail->AddAddress($to);
$mail->Subject = EMAIL_AD_NOTIFICATION_SUBJECT;
$mail->Body = EMAIL_AD_NOTIFICATION_CONTENT;

// send the mail
if($mail->Send()) {
$_SESSION["feedback_positive"][] = FEEDBACK_PASSWORD_RESET_MAIL_SENDING_SUCCESSFUL;
return true;
} else {
$_SESSION["feedback_negative"][] = FEEDBACK_PASSWORD_RESET_MAIL_SENDING_ERROR . $mail->ErrorInfo;
return false;
}
}

} else {
$_SESSION["feedback_negative"][] = FEEDBACK_NOTE_CREATION_FAILED;
}
// default return
return false;

}

0

Решение

  $sql = "SELECT user_email FROM users";
$query = $this->db->prepare($sql);
$query->execute(array(':user_email' => $user_email));
return $query->fetchAll();

Это все немного не так, я думаю, вы хотите что-то более похожее на …

$sql = $this->db->prepare("SELECT user_email FROM users WHERE user_email=?");
$sql->execute(array($user_email));while($row = $sql->fetch(PDO::FETCH_ASSOC)) {
0

Другие решения

Я понял, как заставить его работать, однако я не могу заставить его работать с PDO.

public function create($category_id, $title, $description, $city, $price) {
// clean the input to prevent for example javascript within the notes.
$category_id = \strip_tags($category_id);
$title = \strip_tags($title);
$description = \strip_tags($description);
$city = \strip_tags($city);
$price = \strip_tags($price);$sql = "INSERT INTO ads (category_id, user_id, title, description, city, price) VALUES (:category_id, :user_id, :title, :description, :city, :price)";
$query = $this->db->prepare($sql);
$query->execute(array(':category_id' => $category_id, ':user_id' => $_SESSION['user_id'], ':title' => $title, ':description' => $description, ':city' => $city, ':price' => $price));

$count = $query->rowCount();
if ($count == 1) {// create PHPMailer object here. This is easily possible as we auto-load the according class(es) via composer
$mail = new PHPMailer;

// please look into the config/config.php for much more info on how to use this!
if (EMAIL_USE_SMTP) {
// Set mailer to use SMTP
$mail->IsSMTP();
//useful for debugging, shows full SMTP errors, config this in config/config.php
$mail->SMTPDebug = PHPMAILER_DEBUG_MODE;
// Enable SMTP authentication
$mail->SMTPAuth = EMAIL_SMTP_AUTH;
// Enable encryption, usually SSL/TLS
if (defined('EMAIL_SMTP_ENCRYPTION')) {
$mail->SMTPSecure = EMAIL_SMTP_ENCRYPTION;
}
// Specify host server
$mail->Host = EMAIL_SMTP_HOST;
$mail->Username = EMAIL_SMTP_USERNAME;
$mail->Password = EMAIL_SMTP_PASSWORD;
$mail->Port = EMAIL_SMTP_PORT;
} else {
$mail->IsMail();
}

// build the email
$mail->From = EMAIL_AD_NOTIFICATION_FROM_EMAIL;
$mail->FromName = EMAIL_AD_NOTIFICATION_FROM_NAME;
$mail->Subject = EMAIL_AD_NOTIFICATION_SUBJECT;
$mail->Body = EMAIL_AD_NOTIFICATION_CONTENT;$mysql = mysql_connect('localhost', 'root', 'root');
mysql_select_db('login', $mysql);
$result = mysql_query("SELECT user_email FROM users where ad_email = 1", $mysql);while ($row = mysql_fetch_array($result)) {
$mail->addAddress($row['user_email']);

if (!$mail->send()) {
echo "Mailer Error (" . str_replace("@", "&#64;", $row["email"]) . ') ' . $mail->ErrorInfo . '<br />';
break; //Abandon sending
} else {
echo "Message sent to :" . $row['full_name'] . ' (' . str_replace("@", "&#64;", $row['email']) . ')<br />';

}
// Clear all addresses and attachments for next loop
$mail->clearAddresses();
$mail->clearAttachments();
}} else {
$_SESSION["feedback_negative"][] = FEEDBACK_NOTE_CREATION_FAILED;
}
// default return
return false;
}
0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector