Вы всегда должны поддерживать нормализацию своих данных (один фрагмент данных в каждом столбце).Есть решение этой проблемы с использованием двух таблиц;один для тегов и один для сообщений и MySQL LEFT JOIN
.Ниже приведен очень минимальный пример.
Таблица posts
id int(11) Auto Increment
title char(255)
Таблица tags
id int(11)
postid int(11)
tag char(64)
Запрос для поиска сообщений с тегами, содержащими firstpost
(важно)
SELECT p.title FROM posts p
LEFT JOIN tags t
ON t.postid=p.id
WHERE t.tag LIKE '%firstpost%'
Пример данных
INSERT INTO `posts` (`id`, `title`) VALUES
(1, 'Post number 1'),
(2, 'Another post'),
(3, 'Third post');
INSERT INTO `tags` (`id`, `postid`, `tag`) VALUES
(0, 1, 'first_post'),
(0, 1, 'firstpost_secondtag'),
(0, 2, 'secondpost_firsttag');
Как я уже говорил выше, это очень минимальный пример.Самый важный бит здесь - это использование LEFT JOIN
и отдельной таблицы тегов.Для вас должно быть очевидно, что вы просто заменяете firstpost
в операторе LIKE
на переменную PHP.