вопрос о запросе к базе данных

Тема в разделе "PHP", создана пользователем ivashka, 22 мар 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. ivashka

    ivashka

    Регистр.:
    16 май 2007
    Сообщения:
    151
    Симпатии:
    15
    Есть в переменной слова через пробел, как мне осуществить запрос к базе, что бы выдавались только те позиции из базы, которыи имеют хоть одно слово из этой переменной.

    Заранее благодарен.
     
  2. lobzik

    lobzik

    Регистр.:
    8 авг 2006
    Сообщения:
    311
    Симпатии:
    49
    PHP:
    $sPerem='авыр агыр фавр';
    echo 
    $query "SELECT id FROM table WHERE field LIKE '%"str_replace(" ""%' OR field LIKE '%"$sPerem). "%'";
    :D
     
    ivashka нравится это.
  3. edson

    edson Прохожие

    разбиваешь строку в переменной на слова и через конструкции LIKE '%слово%' OR ... находишь нужное в базе
     
  4. signet

    signet Создатель

    Регистр.:
    1 апр 2007
    Сообщения:
    26
    Симпатии:
    11
    PHP:
    SELECT FROM m_lol WHERE lol_id IN ('bla-bla6','bla-bla5','bla-bla4','bla-bla3','bla-bla1','bla-bla2')
     
  5. masto

    masto Прохожие

    бестолковее запроса я ещё не встречал.
    а если у тебя слова постоянно меняются?

    PS вообщето ответ на вопрос был дан ещё во втором посте.
     
  6. ivashka

    ivashka

    Регистр.:
    16 май 2007
    Сообщения:
    151
    Симпатии:
    15
    Почему-то не работает.
    text - таблица базы
    tags - столбец с которым нужно сравнивать каждое слово

    Что делаю не так?
     
  7. rosko

    rosko Создатель

    Регистр.:
    8 фев 2008
    Сообщения:
    24
    Симпатии:
    3
    Может быть надо text взять в обратные одиночные кавычки, что-то вроде `text` ?
     
  8. mozgon

    mozgon Постоялец

    Регистр.:
    12 фев 2008
    Сообщения:
    141
    Симпатии:
    31
    ТС, у тебя список слов в переменной, а тебе нужно найти совпадения в базе с любым из слов внутри переменной?
    если так то :

    $words = "hello and fuck off";
    $words = str_replace(" ", ",", $words);

    $q = "select * from table where field in ($words)";
     
  9. Skie

    Skie Постоялец

    Регистр.:
    17 мар 2008
    Сообщения:
    110
    Симпатии:
    23
    ivashka, Вы хотите только точные вхождения искать или ещё и словоформы типа: автомобиль, автомобилей , автомобилем...?
     
  10. savit

    savit Писатель

    Регистр.:
    4 апр 2008
    Сообщения:
    7
    Симпатии:
    3
    вот по быстрому из своего скрипта вырвал ... не самый короткий вариант (в следствие того что у меня еще каждое слово определенным образом обрабатывается), но работать точно будет =)

    $str="слово1 слово2 слово3 словоN";

    $words=explode(" ",$str);

    $where=array();

    for($i=0; $i<count($words); $i++)
    {
    $where[]="tags LIKE '%".$words[$i]."%'";
    }

    $where=join($where," OR ");

    ну и запрос:

    SELECT * FROM mytable WHERE $where;
     
Статус темы:
Закрыта.