开发者

MySQL Query not calling data based on variable

Im trying to call all users from a database with the same interests as the current, logged in user on my website.

I have the following

// Get Session USER interest
$interestsquery  = "SELECT `interest` FROM `user_interests` WHERE `user_id` = " . $usersClass->userID();
$result = mysql_query($interestsquery);

$interests = array();
while(list($interest) = mysql_fetch开发者_StackOverflow社区_array($result))
    $interests[] = $interest;
    $interest1 = $interests['1'];
    $interest2 = $interests['2'];
    $interest3 = $interests['0']; 
// END INTERESTS



//USers with Same Interests
$interests_query = "SELECT * FROM produgg_users
join user_interests on produgg_users.id = user_interests.user_id
where interest = '$interest1' and produgg_users.id != '".$usersClass->userID()."'";
$interests_result = mysql_query($interests_query) or die(mysql_error());

if($interests_result != 0) {
    while($interests_row = mysql_fetch_array($interests_result, MYSQL_ASSOC))
    {
        echo $interests_row['user_id'];
    } 
}
else
{
    print "No users to display!";
}
//END SAME INTERESTS

which doesnt bring back any data, yet if I add (beneath //USers with Same Interests) $interest1 = 'footy';

the interests_query seems to work, can anybody see where im going wrong?


My problem seems to lie here...

$interest1 = $interests['1'];
$interest2 = $interests['2'];
$interest3 = $interests['0']; 
// END INTERESTS

//USers with Same Interests
$interest1 = 'footy';

If I manually assign a value to $interest variable it works, but i need to get use the value from the array above, does this make sense?


If your code brings back the correct data when you add $interest1 = 'footy'; line, that would imply that there is something wrong with the value of that variable when you don't. Have you tried var_dump($interest1); right under //Users with Same Interests line to see what kind of input you get from your interestsquery?

I would expect the var_dump to not return a valid string (since if it would, the query would work following the $interest1 = 'footy'; assumption), so you would have to look at what interestsquery returns wrong.


Looks like you querying user_id from user_interests as number, but from produgg_users as string. Maybe there's a problem


You can do it with one query:

$userID = mysql_real_escape_string($usersClass->userID());
$sql = "
SELECT * FROM user_interests AS ui1
JOIN LEFT user_interests AS ui2 ON ui1.id = ui2.id
JOIN LEFT produgg_users AS pu ON ui2.user_id = pu.id
WHERE ui.user_id = " . userID ;

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜