Php 如何在变量中使用逗号获取行和分隔值?
我试图获取数据库中所有电子邮件的列表,并将所有电子邮件连接到一个用逗号分隔的php变量中。这就是我使用的:Php 如何在变量中使用逗号获取行和分隔值?,php,mysql,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 < $qtdema
$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].",";
}
}
这就是我需要的
1@email.com,2@email.com,3@email.com,4@email.com,5@email.com
你能帮我吗?
多谢各位
OBS:我知道它已被弃用,我真的不在乎,但如果你想帮助我以我喜欢的方式学习,否则请帮助我修复代码,然后就可以了。在你的循环中,将所有这些电子邮件添加到一个新的空数组中(删除字符串连接代码) 然后在你的循环之外简单地做
$string=implode("," , $allEmails);
尽管您提到您不想被告知不推荐的代码,但您甚至错误地使用了不推荐的代码:p您的for循环根本不需要。您只需执行一个fetch_assoc
,并在循环时仅使用即可提取这些电子邮件
编辑:因为您要求
while($emailrows = mysql_fetch_assoc($emailres)) {
if(!empty($emailrows['email']))
$allEmails[]=$emailrows['email'];
}
编辑2
正如下面评论中提到的@sgt,您的查询返回空的电子邮件地址;为什么会这样?虽然我添加了一个检查,不包括输出中的记录,但是您应该首先更新查询以不返回此类记录
SELECT `email` FROM `users` WHERE `id` > 1 AND email <>''
从'users'中选择'email',其中'id'>1和email''
有一个函数rtrim可以从变量中删除最后一个。由于我的代码不正确,您能发布一个完全正确的代码吗?我对此一无所知。。。谢谢你,汉基웃 Pankyinfrade()
还将在字符串中包含空值。在存储到数组中之前,应该检查空电子邮件。那里没有空值,如果查询返回空电子邮件值,则应该首先更新查询。这就是重点。添加检查或更新查询。:)不,不需要检查。在用户表中,电子邮件地址通常不允许为空。我们没有迹象表明OP允许它为空。因此,既不需要更新查询,也不需要添加任何检查:)与上述情况相同
while($emailrows = mysql_fetch_assoc($emailres)) {
if(!empty($emailrows['email']))
$allEmails[]=$emailrows['email'];
}
SELECT `email` FROM `users` WHERE `id` > 1 AND email <>''
$emailary = array();
while($emailrows = mysql_fetch_assoc($emailres)) {
$emailary[] = $emailrows['email'];
}
$email_string = implode(",",$emailary);
echo $email_string;
while($emailrows = mysql_fetch_row($emailres)) {
if(!empty($emailrows['email'])){
$email_list.= $emailrows['email'].",";
}
}
$email_list = rtrim($email_list,',');