在文本区域中为数据库中的每一行发布多封电子邮件

时间:2014-11-12 16:47:37

标签: php mysql email

我有一个textarea,会员尽可能多地填写电子邮件。

   <textarea name="emailRefer"> </textarea> 
   <input type="submit"/>

当用户填写电子邮件时,例如10封电子邮件

   <textarea name="emailRefer">klaudia@yahoo.com, diaklau@ya.com, kaludi@hoo.com, and so on </textarea> 
   <input type="submit"/>

如果我发布了这段代码:

  $ReferalEmail = $_POST['emailRefer'];
  if ($result = $mysqli->query("INSERT INTO ReferalTable (ReferalEmail)
                                               VALUES ('$ReferalEmail');")) 

上面的代码会将文本区域中的所有电子邮件一行插入ReferalEmail列。

但是现在当会员发布它时,我希望它发布为数组。

我的意思是作为一个数组,每封电子邮件都将插入一行。如果文本区域中有10封电子邮件,则每封电子邮件将插入10行。

如何做到这一点,任何人都可以帮助我吗?提前致谢。

[UPDATE]

我已经尝试了这个代码的答案,但它在每个第一行给了我一个空白行。

 $ReferalEmail = $_POST['emailRefer'];
 $emails=explode(",",$ReferalEmail);
 foreach ($emails as $email)
 {
      $result = $mysqli->query("INSERT INTO ReferalTable (ReferalEmail)
                                            VALUES ('$email');")
 }

2 个答案:

答案 0 :(得分:2)

如果您要通过昏迷,分隔电子邮件,则可以explode值:

$ReferalEmail = $_POST['emailRefer'];
$emails=explode(",",$ReferalEmail);
foreach ($emails as $email)
{
     $result = $mysqli->query("INSERT INTO ReferalTable (ReferalEmail)
                                           VALUES ('$email');")
}

当然,您应该在插入数据库之前清理输入。

答案 1 :(得分:1)

试试这个:

$ReferalEmail = trim(preg_replace("/\s+/","",$_POST['emailRefer']));
$emails=explode(",",$ReferalEmail);
foreach ($emails as $email)
{

     if($email!=""){
        $result = $mysqli->query("INSERT INTO ReferalTable (ReferalEmail)
                                           VALUES ('$email');")
     }
}