如何选择mysqli用于使用php进行标签搜索?

我有桌子:像这样测试

 ___________________________________________
|_id_|_______name_______|________tag________|
| 1  |        dog       |  animal,pet,dog   |
| 2  |       donuts     |    food,donuts    |
| 3  |       BMW        |         car       |
| 4  |     football     |       sport       |
| 5  |     ferrari      |    car,supercar   |


这是供选择的mysqli php代码

$query = "SELECT * FROM test WHERE tag = '$_GET[tag]' order by id desc";


然后我通过此网址测试我的代码

www.example.com/search_tag.php?tag=car


但是它将仅显示行ID 3,如何选择显示行ID 35

最佳答案

正如@nogad在注释部分所建议的那样,修复您的数据库结构。我建议分开一个表来存储每个名称的标签。

首先,让我们创建一个表来存储不同的标签(tags_tb):

tags_id | tags_desc
--------+----------
   1    |   animal
   2    |    pet
   3    |    dog
   4    |   food
   5    |   donuts
   6    |    car
/*** LIST GOES ON ***/


然后,创建另一个用于存储主题的表(subject_tb):

subj_id | subj_desc
--------+----------
   1    |    dog
   2    |   donuts
   3    |    BMW
/*** LIST GOES ON ***/


然后,创建一个表,用于存储每个主题的相关标签(selected_tags_tb):

 id | subj_id | tags_id
----+---------+---------
  1 |    1    |    1
  2 |    1    |    2
  3 |    1    |    3
  4 |    2    |    4
  5 |    2    |    5
  6 |    3    |    6


因此,当用户选择标签时(例如,用户选择标签-animal,将显示与该标签相关的所有主题),只需执行简单的查询即可:

SELECT b.*
    FROM selected_tags_tb a
    LEFT JOIN subject_tb b ON a.subj_id = b.subj_id
    WHERE a.tags_id = ?


这种方法将使您的系统动态化。

09-30 18:31
查看更多