如何在变量中使用逗号获取行和分隔值?

时间:2014-09-12 04:38:11

标签: php mysql

我试图获取数据库中所有电子邮件的列表,并在用逗号分隔的php变量中连接所有电子邮件。这就是我正在使用的:

 $emailres=do_sqlquery("SELECT `email` FROM `users` WHERE `id` > 1",true);
 $qtdemails=mysql_num_rows($emailres);
 while($emailrows = mysql_fetch_row($emailres)) {
    for($i=0; $i < $qtdemails; $i++){
        $allemails .= $emailrows[$i].",";
    }
 }

如果我在数据库中有5封电子邮件,这就是我在$ allemails变量中的内容:

1@email.com,,,,,2@email.com,,,,,3@email.com,,,,,4@email.com,,,,,5@email.com,,,,,

这就是我需要的

1@email.com,2@email.com,3@email.com,4@email.com,5@email.com
你能帮助我吗? 谢谢

OBS:我知道它已被弃用了,我真的不在乎,但如果你想帮助我以正确的方式去做我想要学习的东西,否则只是帮我修理我的代码而且没问题。

3 个答案:

答案 0 :(得分:1)

在循环中,将所有这些电子邮件添加到新的空数组中(删除字符串连接代码)。

$allemails[] = $emailrows[$i];

然后在你的循环外面做

$string=implode("," , $allEmails);

虽然您提到过您并不想被告知已弃用的代码,但您甚至错误地使用了弃用的代码:P根本不需要您的for循环。您只需执行fetch_assoc并仅使用while循环

提取这些电子邮件

修改:因为您提出了

        while($emailrows = mysql_fetch_assoc($emailres)) {
            if(!empty($emailrows['email']))
              $allEmails[]=$emailrows['email'];
        }

修改2

正如@sgt在下面的评论中提到的,您的查询返回空的电子邮件地址;为什么这样?虽然我添加了一个检查,但不包括输出中的那些,但是你应该更新你的查询,以便不首先返回这样的记录。

SELECT `email` FROM `users` WHERE `id` > 1 AND email <>''

答案 1 :(得分:0)

$emailary = array();
while($emailrows = mysql_fetch_assoc($emailres)) {
        $emailary[] = $emailrows['email'];
     }

$email_string = implode(",",$emailary);
echo $email_string;

答案 2 :(得分:-1)

while($emailrows = mysql_fetch_row($emailres)) {
 if(!empty($emailrows['email'])){
     $email_list.= $emailrows['email'].",";
 }
}

$email_list = rtrim($email_list,',');

有一个函数rtrim从变量中删除最后一个。