Значения, разделенные запятыми и как php / mysql Troubles - PullRequest
0 голосов
/ 23 марта 2010

Настройка Это более или менее дополнительный вопрос к тому, что я ранее опубликовал относительно значений, разделенных запятыми (взорваться, взорваться).Вот сценарий, который топал меня последние несколько дней, когда я новичок - извините за длинный пост.

Я передаю переменную через URL (index.php? Id = variable), затем я проверяю базу данных, чтобы найти строки, содержащие эту переменную, используя

SELECT * FROM table WHERE column LIKE '%$variable%' 

I'mиспользование подстановочных знаков, потому что результаты представляют собой значения, разделенные запятыми, а переменная появляется в базе данных несколько раз.

Так что, если мы назначаем ... скажем, школы на популярные телешоу ... моя база данных настроена так, что пользователь может назначить более одной школы на телешоу.IE.

Южный парк -> ФСУ , Нью , MIT

Лучник -> Гарвард, ню

Index.php? Id = ню будет отображать Sourth Park & ​​Archer.

Проблема Потому что я использую Like '%variable%'

Если у меня есть следующее: South Park -> uark Archer -> ua

index.php? = Ua Вместотолько показ Арчера, Southpark также показал бы.

Что имеет смысл из-за подстановочных знаков ... но кто-нибудь может придумать, как добиться этого, чтобы добиться желаемых результатов? .. Есть ли способ добиться более точных результатов, используя значения, разделенные запятыми ?.Я полностью растрепан и буду признателен за любую помощь.

Ответы [ 2 ]

2 голосов
/ 23 марта 2010

Лучшим вариантом является создание двух других таблиц.Одна таблица - это та, что у вас уже есть 'tv_shows', а вторая таблица - таблица 'tags', а третья таблица - таблица соединений.

Вот пример:

 CREATE TABLE tags(id INT, tag VARCHAR(200));
 CREATE TABLE tv_tags(show_id INT, tag_id INT);

 SELECT FROM tv_shows,tv_tags WHERE tv_shows.id=tv_tags.show_id AND tag_id IN (SELECT id FROM tags WHERE tag LIKE 'tag');
1 голос
/ 23 марта 2010

пробовали ли вы оператора REGEXP?что-то вроде

SELECT * FROM table WHERE column REGEXP('(^|,)%variable%(,|$)')  

может быть немного по-другому, если между тегами есть пробелы, но идея здесь

...