我有3个用户名,即:usernameA,usernameB,usernameC。我还将他们的电子邮件放在一个表格中,即:usernamea @ gmail,usernameb @ gmail,usernamec @ gmail。我不知道如何从这3个用户名一次性收到这些电子邮件。我可以这样做:
$q=mysql_query("SELECT email FROM t_un WHERE username='usernameA'");
$f=mysql_fetch_object($q);
$emailA=$f->email;
$q=mysql_query("SELECT email FROM t_un WHERE username='usernameB'");
$f=mysql_fetch_object($q);
$emailB=$f->email;
$q=mysql_query("SELECT email FROM t_un WHERE username='usernameC'");
$f=mysql_fetch_object($q);
$emailC=$f->email;
但这对我来说很不舒服。有没有更好的方法在SQL中一次从3个用户名获取电子邮件?感谢。
答案 0 :(得分:2)
你可以这样做
小心!这是SQL注入漏洞。请勿使用此处提供的代码示例。
$userNames = array("usernameA", "usernameB", "usernameC");
$array2 = "'" .implode("','", $userNames ) . "'";
$q=mysql_query("SELECT email FROM t_un WHERE username IN $array2 ");
$f=mysql_fetch_object($q);
$emailC=$f->email;
答案 1 :(得分:1)
我不知道我是否理解你的需要,但要试一试:
SELECT GROUP_CONCAT(t_un.email) AS users FROM t_un WHERE username='usernameA' OR username='usernameB' OR username='usernameC';
它将返回一个名为users的逗号分隔字段。你可能想要另一个分隔符,然后你可以试试这个:
SELECT GROUP_CONCAT(t_un.email SEPARATOR ";") AS users FROM .......
答案 2 :(得分:1)
请尝试以下代码。它将根据需要为您提供三个不同变量$ emailA,$ emailB,$ emailC中的每个电子邮件地址。
$q=mysql_query("SELECT email FROM t_un WHERE username='usernameA' OR username='usernameB' OR username='usernameC'");
$chr_ptr = 'A';
while($row = mysql_fetch_assoc($q)){
eval('$email'.$chr_ptr.' = '.'$row[\'email\'];');
$chr_ptr++;
}
echo $emailA;print PHP_EOL;
echo $emailB;print PHP_EOL;
echo $emailC;print PHP_EOL;