如何选择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 3
和5
? 最佳答案
正如@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 = ?
这种方法将使您的系统动态化。