【问题标题】:Show publications according to the interests of the users根据用户的兴趣显示出版物
【发布时间】:2019-05-27 16:36:14
【问题描述】:

我想根据用户的兴趣(在关键字中)显示出版物。

用户表

id | username
5  | joelsilva

出版物表

id | publication title
8  | The best car of the year!

兴趣表

id | username | interest
8  | joelsilva | car
9  | joelsilva | year

它在主页上显示所有带有汽车标题和年份的出版物。

我试过了

$pubs = mysql_query(
    "SELECT * 
      FROM PUBLICATIONS 
      WHERE (interest LIKE '%".$interests."%')
      ORDER BY id desc"
) or die(mysql_error());

它有效只适用于表格中的一种兴趣类型。如果添加多个兴趣没有显示任何内容。

【问题讨论】:

  • 请解释一下您的意思。你想用什么算法?
  • 很大程度上取决于您如何填充 $interests.... 如果您只是将关键字连接在一起,您会得到类似 %car year% 的结果,因此除非您按顺序排列这些单词,中间没有任何内容他们那么它将不起作用.....如果您在关键字之间连接一个 % 它可能会更好地工作,或者您可能需要构建查询,为每个兴趣添加一个 OR 条件。
  • 我想在mysql_query中使用php代码
  • 这是我的代码: $request_username_user_cookie= $requestusercookie["username"]; $request_interesses_total = mysql_query("SELECT * FROM interesses WHERE user='$request_username_utilizador_cookie'"); $request_interesses = mysql_fetch_assoc($request_interesses_total); $Interesses= $request_interesses["interesses"]; $ pubs = mysql_query ("SELECT * FROM PUBLICATIONS WHERE (interesse como '%". $ Interesses. "%') ORDER BY id desc") ou morrer (mysql_error ());

标签: php mysql sql


【解决方案1】:

在包含兴趣的标题上加入出版物和兴趣,并获得不同的出版物行。过滤用户。

SELECT DISTINCT
       p.*
       FROM publications p
            INNER JOIN interests i
                       ON p.title LIKE concat('%', i.interest, '%')
       WHERE username = ?
       ORDER BY p.id DESC;

(顺便说一句:他们的 ID 应该在兴趣表中,而不是用户名。您可能应该看看 here 以了解为什么在构建查询时不应该使用字符串连接而是参数化查询。)

【讨论】:

  • 我正在使用这个代码,你可以在正确的地方变成 $ ...?$request_username_user_cookie= $requestusercookie["username"]; $request_interesses_total = mysql_query("SELECT * FROM interesses WHERE user='$request_username_utilizador_cookie'"); $request_interesses = mysql_fetch_assoc($request_interesses_total); $Interesses= $request_interesses["interesses"]; $ pubs = mysql_query ("SELECT * FROM PUBLICATIONS WHERE (interesse como '%". $ Interesses. "%') ORDER BY id desc") ou morrer (mysql_error ());
猜你喜欢
  • 2021-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-06
  • 1970-01-01
  • 2015-10-04
  • 2022-12-21
  • 2022-01-13
相关资源
最近更新 更多