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