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

时间:2014-03-25 05:16:47

标签: php mysql

音乐数据库网站
我有一个名为ps_albums的表格,其中包含以下列:artistalbumgenre_id,依此类推。 我还有一个名为ps_users的第二个表,其中包含以下列:user_iddate_joinedfave_genre_1fave_genre_2fav_genre_3和其他。< / p>

我的总体目标是仅显示用户为前3个最喜欢的选择选择的音乐类型。

我能够将所有3个最喜欢的流派选择中的genre_id插入到ps_profiles中,其中包含此信息。现在我需要能够拉出3个genres_id,并且默认情况下只显示所有类型。

默认情况下SELECT * FROM ps_albums ORDER by DESC;

因此在首页上显示所有专辑。

现在,当该用户点击“我最喜欢的流派”时,我会这样做......

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

我希望能够根据ps_profiles中的3个最喜欢的选项显示ps_albums中的所有记录。 我如何设置select语句?

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

我该怎么做?有超过10种类型但我只想显示从3列中选择作为收藏的那些。希望这可以澄清一点。

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

您可以使用ORIN()来匹配具有多个可能值的列值。

例如:

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

因此,对于您的情况,它看起来像这样:

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

我在查询中添加了引号,我假设类型是字符串?