简体   繁体   中英

select random variable from sql and assign it to a function

I have this function:

function userPicBySkill($mainPassion){
$query  = mysql_query("SELECT id, username, imagename FROM users WHERE mainpassion =    '$mainPassion' ORDER BY RAND() LIMIT 5"); 

while ($row = mysql_fetch_array($query)) { 

$uid = $row["id"];
$username = $row["username"];   
$imagename = $row["imagename"];

echo "<a href='/$username'>  <img src='image/$imagename' width='40' height='41' alt =    '$username'></a>"; 
 } 
   }

it works if I assign:

 $mainpassion = 'some skill';

What I would like to do is randomly choose 5 'skills' from my table 'skills':

+----------+-----------+
|skill_id  | skill_name|
+----------+-----------+
|        1 |   guitar  |  
|        2 |   cooking |   
|        3 |   math    |    
|        4 |   plumbing|
|        5 |   piano   |
+----------+-----------+

and then get 5 users pictures for each skill. I tried this but it doesn't show anything:

function findRandomSkill(){

$skill_list = mysql_query("SELECT skill_name FROM skills ORDER BY RAND() LIMIT 5");
while($row = mysql_fetch_array($skill_list)){
$skill = $row['skill_name'];
echo '<div class="userBySkillDiv">
<h5>'.$skill.'</h5>';
userPicBySkill($skill);
echo'</div>';
}

It's better to apply joins instead of doing 25 queries:

SELECT id, username, imagename 
FROM users 
INNER JOIN (SELECT skill_name
    FROM skills
    ORDER BY RAND() 
    LIMIT 5
) userskills ON users.mainpassion = userskills.skill_name
ORDER BY RAND()
LIMIT 5

What do you mean by 'doesn't show anything'? Is the list of 5 skill names being returned?

To get 5 random skills, try $skill_list = mysql_query("SELECT DISTINCT(skill_name) FROM skills ORDER BY RAND() LIMIT 5");

use different $row variable in function like this, this is causing problem.

function userPicBySkill($mainPassion){
$query  = mysql_query("SELECT id, username, imagename FROM users WHERE mainpassion =    '$mainPassion' ORDER BY RAND() LIMIT 5"); 

while ($row1 = mysql_fetch_array($query)) { 

$uid = $row1["id"];
$username = $row1["username"];   
$imagename = $row1["imagename"];

echo "<a href='/$username'>  <img src='image/$imagename' width='40' height='41' alt =    '$username'></a>"; 
 } 
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM