Все остальные ответы, скорее всего, будут работать, но вы должны рассмотреть возможность нормализации таблицы. Хранение этого как csv будет сложно поддерживать.
Удалите tags
столбец из того, что я буду называть ваш post
стола в результате (вы должны рассмотреть хранящий user_id
больше name
):
+----+------+-----------+------+------------+
| id | user | title | body | Date |
+----+------+-----------+------+------------+
| 1 | Tony | Functions | .... | 2016-07-27 |
+----+------+-----------+------+------------+
Теперь создайте post_category
таблицу, которая будет заполнена, как это.
+----+---------+------------+
| id | post_id | tag |
+----+---------+------------+
| 1 | 1 | javascript |
| 2 | 1 | jquery |
| 3 | 1 | html |
| 4 | 1 | mysql |
+----+---------+------------+
post_id
является foreign key
к post
таблицы id
колонки.
Теперь вы можете сделать запрос типа (не проверено):
SELECT post.* FROM post
#Joins are intimidating at first
#but a pretty important concept to learn
JOIN post_category ON post.id = post_category.post_id
WHERE post_category.tag LIKE '%javascript%'
Создание таблицы tag
бы также рекомендуется, чтобы вы могли контролировать теги пользователи могут использовать. Это было бы похоже на вышесказанное. Если вы хотите, чтобы какой-нибудь пример дал мне знать.
Дополнительная информация для комментариев
Поскольку вы получаете строку CSV для INSERT
вы можете сделать что-то вроде этого:
//Create your post and get the id.
$string = "javascript,jquery,html,mysql";
$post_cats = explode(',', $string); //This is an array broken at ,
foreach($post_cats as $post_cat){
//Do your insert with $post_cat it is a string and the post_id you have
}
Дополнительная информация для комментариев по поводу таблицы тегов
Таблицу не составит труда создать. Это будет Id
, который является primary key
и name
потенциально description
, но я оставлю это сейчас.
+----+-----------+
| id | name |
+----+-----------+
| 1 |javascript |
| 2 |jquery |
| 3 |html |
| 4 |mysql |
+----+-----------+
Теперь вы просто обновить post_category
таблицу, чтобы иметь tag_id
как foreign key
к tag
стола id
+----+---------+--------+
| id | post_id |tag_id |
+----+---------+--------+
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 1 | 3 |
| 4 | 1 | 4 |
+----+---------+--------+
Теперь ваш запрос становится (не проверено)
SELECT post.* FROM post
JOIN post_category ON post.id = post_category.post_id
JOIN tag ON tag.id = post_category.tag_id
WHERE post_category.post_id = 1
Хитрость дает пользователю интерфейс для выбора нескольких тегов, но это еще одна тема.
Большое спасибо. Я буду использовать это – Tonza
Как сделать Mysql 'post_category' INSERT в форме сообщения. У меня есть строка, подобная этой 'javascipt, jquery, php'. Должен ли я сделать 3 разных запроса mysqli? – Tonza
Вам больше не понадобится предложение 'LIKE', если вы это сделаете. –