根据用户的兴趣显示出版物

时间:2018-12-31 00:07:34

标签: php mysql sql

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

用户表

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());

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

1 个答案:

答案 0 :(得分: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,以了解为什么在构建查询而不是参数化查询时不使用字符串连接的原因。 )