1

I have 3 username, ie: usernameA,usernameB,usernameC. And I have also their email in a table, ie: usernamea@gmail,usernameb@gmail,usernamec@gmail. I don't know how to get these emails at once from that 3 username. I can do it by this:

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

but that's uncomfortable for me. Is there any better way to get that emails from 3 username at once in SQL? thanks.

JRD
  • 1,957
  • 1
  • 12
  • 17
Juna serbaserbi
  • 205
  • 2
  • 12
  • Have a look at the [IN](https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#function_in) operator. – JRD Nov 11 '15 at 06:59

3 Answers3

2

You can do like this

BEWARE! This is SQL injection vulnerabile. Do NOT use the code samples presented here.

$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;
mumair
  • 2,768
  • 30
  • 39
1

I don't know if I understand your need, but try it out:

SELECT GROUP_CONCAT(t_un.email) AS users FROM t_un WHERE username='usernameA' OR username='usernameB' OR username='usernameC';

It will return a comma-separated field called users. You may want another separator, then you can try this:

SELECT GROUP_CONCAT(t_un.email SEPARATOR ";") AS users FROM .......
gugabguerra
  • 635
  • 1
  • 5
  • 8
1

Please try below code. It will provide you each email address in three different variables $emailA, $emailB, $emailC as required.

$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;
Sashant Pardeshi
  • 1,075
  • 7
  • 21