我试图获取数据库中所有电子邮件的列表,并将所有电子邮件连接在以逗号分隔的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变量中得到的内容:

[email protected],,,,,[email protected],,,,,[email protected],,,,,[email protected],,,,,[email protected],,,,,


这就是我所需要的

[email protected],[email protected],[email protected],[email protected],[email protected]


你能帮我吗?
谢谢

OBS:我知道它已经过时了,我真的不在乎,但是如果您想帮助我以我愿意学习的正确方式来做,否则请帮我修复我的代码并确定。

最佳答案

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

$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 <>''

关于php - 如何在变量中获取行并用逗号分隔值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25800836/

10-12 04:17