选择我喜欢使用PHP的用户

时间:2015-02-10 17:39:06

标签: php

我需要使用两个表中的PHP进行查询。第一个表具有用户信息,例如(userName,age,country)。

在我的应用程序中,用户可以像其他用户一样,因此我创建了第二个包含两个字段的表(myName,userName)userName将与第一个表中的值相同。

我需要的是选择我喜欢的所有用户。

第一张表:

userName    |   age |   country
--------------------------------------
name1       |   20  |   USA
name2       |   21  |   UK
name3       |   23  |   UAE
name4       |   33  |   India
name5       |   19  |   Canada
name6       |   25  |   USA

第二张表:

userName        myName
name1   |       ahmed
name2   |       Mic
name3   |       ahmed
name4   |       Danil
name5   |       ahmed
name5   |       Mic
name6   |       ahmed

从上表中可以看出Ahmed喜欢3个用户名。我需要使用PHP来选择依赖于POST的三个用户。

谢谢,我希望问题很清楚

2 个答案:

答案 0 :(得分:0)

假设您的第一个表被调用(用户)而第二个表是(users_likes),那么您应该有这样的查询:

SELECT u.* FROM users u
INNER JOIN users_likes ul ON ul.userName = u.userName
WHERE ul.myName = 'ahmed'

答案 1 :(得分:0)

首先:我假设您正在使用像MySQL这样的关系型数据库,如果是这样的话,您就会错误地解决这个问题。

为什么呢?如果一个用户,即约翰,喜欢布兰登和雅各布,但布兰登决定他的名字现在必须是白兰度(因为他有奇怪的昵称),用户布兰登将被删除所有未来的查询,因为他的名字已经改变。或者如果数据库中有两个" Brandon Smith"怎么办?你不想同时喜欢这两个。

我们解决这个问题的方法是使用关联表和连接。这就是主键(' id')在数据库中如此重要的原因。这种方式只要用户的ID没有变化(除非用户被删除,这不应该发生)我们可以保持这种关系。

Table 'user'
id    |  first_name  |  last_name  |  email  |
1     |  John        |  Doe        | a@b.org |
2     |  Brandon     |  Smith      | c@d.org |
3     |  Jacob       |  Smidt      | e@f.org |

Table 'user_like'
id    |  user_id     |  liked_user_id 
1     |  1           |  2
2     |  1           |  3

因此,您将选择用户并加入user_like,其中user_id = user.id,它将返回所有喜欢的user_ids。

就查询而言,它确实为您创造了更多的工作,但它使数据库更加可靠。