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