【问题标题】:PHP: Search in one table and in anotherPHP:在一个表和另一个表中搜索
【发布时间】:2010-09-09 17:15:59
【问题描述】:

我正在制作一个自动提示功能,当用户在它存储的字段中写一些东西时:

$queryString = $db->real_escape_string($_POST['queryString']);

我希望它在用户朋友之后自动建议。用户的朋友在 users_friends 中,但只有朋友的 ID。现在他们的全名在“用户”表中。我想当你搜索它时应该在用户中寻找全名+检查它是否与用户成为朋友。

正如您可能理解的那样,我不希望我的所有用户都知道彼此的 id 如此写,例如“52”“233”,而是搜索他们的全名。

更新:

我知道尝试过这样做: $query = $db->query("SELECT uf.bID FROM 用户朋友,users_friends uf WHERE uf.uID = '1' AND uf.type = 'friend' AND friends.full_name LIKE '$queryString%' LIMIT 10;" );

它从用户朋友中选择bID,其中用户ID为1并且是朋友。

现在我开始看到一些我认为的结果。当我写一个我朋友的全名时,我得到了用户的 id(存储在 bID 中的 id)。现在我只需要在 id = bID 的“用户”中获取全名。

table: users
id | full_name

table: users_friends
id | uID | bID

所以总结这一切(试图做一个更好的总结,以便让你更好地理解:)

当您在搜索字段中输入例如 Jack 时,$queryString 现在是“jack”。然后它正在获取“Jack”(用户中的全名),获取他的 id(用户中的 id),如果他当然存在,然后将其与 uID 为 $USER 的 bID(在 users_friends 中)匹配; ($user 是当前登录用户的 id。)

希望这更容易理解,如果有不清楚的地方,请发表评论。

【问题讨论】:

  • 您使用的是什么数据库? MySQL?
  • 是的 mysql 和 php 编码

标签: php mysql


【解决方案1】:

所以,正如我所知道的,您在 $USER 中获得了当前用户的 ID,在 $queryString 中获得了它的查询字符串,而您想要的是基于 $queryString 的用户朋友的名字,对吗? ?

所以,假设数据库的架构如您所说:

table: users
id | full_name

table: users_friends
id | uID | bID

看看这个查询是否适合你,然后:

SELECT users.full_name 
FROM users INNER JOIN users_friends ON users.id=users_friends.uID
WHERE bID=$USER AND users.full_name LIKE '$queryString%'
LIMIT 10;

其中 $USER 和 $queryString 是您的变量。

【讨论】:

    【解决方案2】:

    您想一次从多个表中读取数据吗??

    SELECT table1.id, table2.name FROM table1, table2 WHERE ...

    我的英语不是很好,什么都听不懂:D

    【讨论】:

      【解决方案3】:

      我没听懂你的问题 但是你可以使用这个查询:

      mysql_query("SELECT * FROM table_one, table_two WHERE table_one.id = table_two.id");
      

      【讨论】:

        猜你喜欢
        • 2016-08-28
        • 1970-01-01
        • 1970-01-01
        • 2013-10-08
        • 1970-01-01
        • 1970-01-01
        • 2019-11-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多