0

我想为我的网页做一个搜索引擎。我的 mysql 数据库中有几个表,我希望它们在用户时合并

Table users
id  name        age country     vip profile_image
1   nick        23  sweden      1   yes
2   michael     20  germany     0   no
3   laura       19  usa         1   yes
4   gary        33  china       1   yes

Table online
id  user_id     online
1   1             1
2   2             1 
3   4             1

user_id 连接到 users 表中的 id

Now i have checkboxes
[ ] Those which are online
[ ] Those which are vip
[ ] Those with profile image

我用 PHP 对我的页面进行编码,并且我试图弄清楚如果选中某个复选框,如何在 sql 查询中包含某些搜索。我可以在这里有很多选择。例如,如果没有选中复选框,如果你想搜索那些在线的,我如何进入第二个表?

我希望你能明白我的意思。我真的希望有人可以帮助我,并给我一个 php & sql 查询的工作示例。

干杯!

4

2 回答 2

1

首先,您必须检查哪些复选框已被选中。然后你必须根据这些信息用 PHP 编写 MySQL 查询。您必须在每个复选框中考虑它需要检查哪些信息。如果您的数据库编写得很好,那么很少会出现两个选项相互影响的问题。如果信息在用户表中,您只需将行写入 where 子句。如果您需要将表连接到用户表以获取信息,您也需要这样做。这是一个例子

$query = "";
$query .= "SELECT users.* FROM users";
if ($include_online == 1) {
  $query .= " LEFT JOIN online ON online.user_id = users.id";
}
$query .= " WHERE";
if ($include_vip == 1) {
 $query .= " users.vip = 1 AND";
}
if ($include_image == 1) {
  $query .= " users.profile_image = 'yes' AND";
}
if ($include_online == 1) {
  $query .= " online.online = 1 AND";
}
$query .= " users.name LIKE '%".$search_string."%'";
于 2012-12-09T16:16:12.813 回答
0

您需要形成如下查询:

SELECT users.name, users.age, users.country
FROM users
LEFT JOIN online ON user.id = online.user_id
WHERE ((user.vip = 1) && (online.online = 1))
于 2012-12-09T16:15:42.377 回答