SELECT * FROM tbl WHERE col1 = $ var1和col2 = $ var2和col3 = $ var3

Music Database Site:
I have a table named ps_albums with columns: artist, album, genre_id, and so on. I also have a second table named ps_users with the following column: user_id, date_joined, fave_genre_1, fave_genre_2, fav_genre_3 and other.

My overall goal is to display only the genres of music that a user selects for the top 3 favorite selections.

I am able to INSERT the genre_id of all 3 favorite genre selections into ps_profiles which hold this info. Now I need to be able to pull the 3 genres_id's and display only them instead off all genres by default.

So by default SELECT * FROM ps_albums ORDER by DESC;

Thus displaying ALL albums on the front page.

Now, when that user clicks 'My Favorite Genres' I do this...

$query= "SELECT * FROM  `ps_profiles` WHERE `user_id`= $user_id";
$row = @mysql_fetch_object(@mysql_query($query));

$genre1 = $row->fav_genre_1;
$genre2 = $row->fav_genre_2;
$genre3 = $row->fav_genre_3;

I want to be able to display all records from ps_albums according to the 3 favorite selections from ps_profiles. How would I setup the select statement?

SELECT * FROM ps_albums WHERE genre=$genre1 AND genre=$genre2 AND genre=$genre3

How would I go about this? There are more then 10 genres but I only want to show the ones selected as favorites from the 3 columns. Hopes this clarifys a bit more.

SELECT * FROM ps_albums WHERE genre in ($genre1,$genre2,$genre3)

You could use either OR's or IN() to match a column value with multiple possible value.

For example:

SELECT * FROM t WHERE a=1 OR a=2 OR a=3;
SELECT * FROM t WHERE a IN(1,2,3);

So for your case, it could look something like this:

$query = "SELECT * FROM ps_albums WHERE genre IN('$genre1', '$genre2', '$genre3')";

I added quotes in the query, I'm assuming genre's are strings?