Php 搜索带有标记的图像

Php 搜索带有标记的图像,php,mysql,Php,Mysql,我有一个大约700张图片的数据库,但我想创建一个搜索栏,这样我就可以通过标签找到它们 我该如何开始这样做 我相信你会将标签添加到mysql数据库中……我该如何做,以及我该如何做多个标签?有一个额外的表标签,其列将是:id和name,它们将保存所有可能的标签,还有另一个表image\u tags,它将具有image\u id和tag\u id | tags | +---+------+ | 1 | cats | | 2 | dogs | | 3 | foo | | im

我有一个大约700张图片的数据库,但我想创建一个搜索栏,这样我就可以通过标签找到它们

我该如何开始这样做


我相信你会将标签添加到mysql数据库中……我该如何做,以及我该如何做多个标签?

有一个额外的表
标签
,其列将是:
id
name
,它们将保存所有可能的标签,还有另一个表
image\u tags
,它将具有
image\u id
tag\u id

|   tags   |
+---+------+
| 1 | cats |
| 2 | dogs |
| 3 | foo  |

|         image_tags        |
+---------------------------+
| 1 (cat image)         | 1 |
| 1                     | 3 |
| 2 (dog image)         | 2 |
| 3 (cat and dog image) | 1 |
| 3                     | 2 |
这样,同一图像可以有多个标记,并且同一标记可以出现在多个表上

这称为多对多关系

这是经典的“多对多”关系

要创建基于标签的系统,您应该在DB中创建两个新的故事(假设“标签”和“标签图像”表)

在“标签”表中有两个字段:“id”和“标签”

在“tags_images”表中有3个字段:“id”、“tag_id”和“image_id”

因此,要向iamge添加标记,只需将新记录添加到“tags\u images”表中,连接标记(通过“tag\u id”)和图像(bt“image\u id”)

此外,您还必须在“标记”表中添加一个新标记,因为没有这样的标记

要获取标记为“dog”的所有图像,您应该进行简单的sql连接查询,如:

SELECT `tags`.*, `images`.*
FROM `tags` t
INNER JOIN `tags_images` ti ON t.`id` = ti.`tag_id`
INNER JOIN `images` i ON i.`id` = ti.`image_id`

对于多个标记,请查看“多对多”表结构。。。