根据3个不同的值从DB中选择行

时间:2011-07-04 20:39:46

标签: php mysql

目前我的数据库看起来也很相似......

ID     Username     Interest
04     Tommy        Soccer
04     Tommy        Internet
32     Jack         Soccer
32     Jack         Swimming
32     Jack         Boxing

我的网站上有一个页面,用户可以在其中指定他/她的兴趣,并根据他们输入的内容,显示具有相同兴趣的页面。

所以如果汤米要访问我的页面并添加“拳击”作为兴趣杰克会出现,因为他在表格中列出了“拳击”。

我需要编写一个查询来执行此操作,但我不确定这样做的最佳方式,因为我仍然是PHP的新手,会有类似的内容......

mysql_query(SELECT * FROM interests_table WHERE Interest = $interest1 || $interest2 || Interest3);

2 个答案:

答案 0 :(得分:2)

mysql_query("SELECT * FROM interests_table WHERE (Interest = $interest1 OR Interest = $interest2 OR Interest = $Interest3)");

答案 1 :(得分:1)

更短:

mysql_query("SELECT * FROM interests_table WHERE Interest IN ($interest1, $interest2, $interest3)");

当然,您需要添加必要的参数以逃避更安全的代码。

如果您想要在数组中搜索所有可能的值,则代码可能如下所示:

$interests = array('boxing', 'swimming', 'speedway');
// ... query preparation
$result = mysql_query("SELECT * FROM interests_table WHERE Interest IN (" . implode('", "', mysql_real_escape_string($interests)) . ")");
// rest of the code ...

但此代码仅对小型数据集(少数到数百)有效。如果您对列表有更多兴趣,您应该找到更有效的方法。