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

标签 php mysql mysqli

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

我有表:像这样测试

 ___________________________________________
|_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 = ?

这种方法将使您的系统充满活力。

关于php - 如何使用 php 选择 mysqli 进行标签搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40144843/

相关文章:

javascript - 重复页面显示不同

php - 调用非对象上的成员函数bindParam()

php - 在构建 MySql INSERT 中使用 PHP 变量

mysql - MariaDB 表卡住了

mysql - 安装mysql出错

php - 将文件解析为数组时出现额外的空白值

php - rest api,规范化mysql在php中返回的行数据

php - 创建连接类以在代码库上使用

javascript - 添加单选按钮

php - MySQL ISNULL 与 INNER JOIN