substring_index存储到会话

时间:2011-05-01 03:49:45

标签: 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循环中做错了什么,我不知道是什么。

2 个答案:

答案 0 :(得分:2)

您想将其设置为之外。

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

$_SESSION['sending_domain'] = $sending_domain;

答案 1 :(得分:1)

我无法检查您是否正确使用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循环所在的会话之外
  4. 我认为前两个只是形式,但我对这种方式更加满意。第3步,将会话分配从循环中取出,才是真正重要的。它应该只在填充$sending_domain时执行一次。