nor1m
@nor1m
web-developer

SQL LIKE регулярка?

Товарищи, у меня вопрос.
у меня есть запрос к базе на вывод записей по рубрике.

SELECT * FROM `posts` WHERE `id_rubric` LIKE '%5%'

в базе в ячейке id_rubric может быть как один id, так и несколько через запятую(пример - 1,3,5).
этот запрос выдает записи с айди 5 и 1,3,5, и так как мне не нужно 45 и 51.
Как построить запрос правильней ?
  • Вопрос задан
  • 337 просмотров
Решения вопроса 1
nor1m
@nor1m Автор вопроса
web-developer
Сам отвечу на свой вопрос. Решил таким способом

while ( $row = mysql_fetch_assoc($res) ) {
	$ids_from_db = $row['id_rubric'];
	// если не равен id то ищем позицию 
	if( $ids_from_db != $id_rubric ){
		if( strpos($ids_from_db, $id_rubric.',') !== false OR strpos($ids_from_db, ','.$id_rubric) !== false){
			array_push($posts_array, $row);
		}
	}
	else{
		array_push($posts_array, $row);
	}
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Правильней - нормализовать базу и вынести соотношение `posts` <=> `rubric` в отдельную таблицу связи.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы