хранилище substring_index для сеанса

#php #mysql

#php #mysql

Вопрос:

Я пытаюсь получить только домены из списка электронных писем. это то, что у меня есть:

 $query = "SELECT DISTINCT substring_index(email, '@', -1)";
$query .= " FROM `mailer_lists`";
$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)){
  $sending_domain[] = $row['email'];
  $_SESSION['sending_domain'] = $sending_domain;
}
  

По сути, он проверяет mailer_lists для всех доменов, на которые я отправляю. Все, что я хочу, это для доменов, которые находятся в mailing_lists таблице, и сохранить их в массив для сеанса. Я сделал что-то неправильно в цикле while, и я не уверен, что именно.

Ответ №1:

Вы хотите установить его вне цикла.

 $sending_domain = array();
while($row = mysql_fetch_array($result)){
  $sending_domain[] = $row['email'];
}

$_SESSION['sending_domain'] = $sending_domain;
  

Ответ №2:

У меня нет средств проверить, что вы используете substring_index правильно, но предполагая, что вы используете…

 $query = "SELECT DISTINCT substring_index(email, '@', -1) as email_domain";
$query .= " FROM `mailer_lists`";
  $result = mysql_query($query) or die(mysql_error());

$sending_domain = array();
while($row = mysql_fetch_array($result)){
  $sending_domain[] = $row['email_domain'];
}

$_SESSION['sending_domain'] = $sending_domain;
  

Итак, изменения, которые я внес…

  1. Поместите as email_domain в запрос.
  2. Создание пустого массива в начале
  3. Поместите присвоение сеансу вне цикла while, где оно принадлежит

Я думаю, что первые два были просто для формы, но мне так с ними удобнее. Шаг 3, вывод назначения сеанса из цикла, — это то, что действительно имеет значение. Это должно быть сделано только один раз, когда $sending_domain заполнено.

Комментарии:

1. сразу после этого мне не хватало ‘as’ в моем sql-запросе. теперь это имеет большой смысл. я также предполагаю, что $ _SESSION внутри цикла while вызовет множество проблем с ресурсами, что объясняет, почему мой сервер действовал во время каждого задания cron.