有没有更好的方法在SQL中一次从3个用户名获取电子邮件?

时间:2015-11-11 06:55:56

标签: php mysql

我有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个用户名获取电子邮件?感谢。

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;