За последние 24 часа нас посетили 18197 программистов и 1596 роботов. Сейчас ищут 969 программистов ...

Не работает несколько LIKE

Тема в разделе "MySQL", создана пользователем rustoke, 18 окт 2014.

  1. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    С одним LIKE все работает нормально
    Код (Text):
    1.  
    2. $rs = mysql_query("SELECT * FROM base WHERE city='".$cityname."' AND deleted != 'yes' AND text LIKE '%".$_GET['poisk']."%' order by id desc");
    Если добавляю три LIKE, то перестает работать переменная CITY
    Код (Text):
    1.  
    2. $rs = mysql_query("SELECT * FROM base WHERE city='".$cityname."' AND deleted != 'yes' AND text LIKE '%".$_GET['poisk']."%' OR tel LIKE '%".$_GET['poisk']."%' OR title LIKE '%".$_GET['poisk']."%' order by id desc");
    Где ошибка?? КаК наладить, помогите плиз
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    инъекция
    инъекция
    инъекция
    инъекция
    опастносте
    инъекция
    инъекция
    инъекция
    =)
     
  3. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    Что это значит ? уязвимость?)
     
  4. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    не только сити. логика:
    А и Б и В или Г или Д. всё это условие истинно либо для истинных АБВ (и любых значений Г/Д) либо для любой истины из Г или Д. таким образом не важно город это (А) или "не удалено" (Б) оно не будет иметь никакого фильтрующего значения в момент когда есть совпадения по тексту/телу(телефону?)/заголовку.
    учите алгебру логики

    если вы хотите на выбор оставить одно из совпадений по тексту или телефону или заголовку (любое из! два из! или все из трех!) и при этом важно совпадение по первым двум критериям то вам надо сделать такую конструкцию:
    А и Б и (В или Г или Д)
     
  5. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    все, я разобрался, нужно было UNION использовать
     
  6. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    уверены? результат-то не прячьте
     
  7. rustoke

    rustoke Новичок

    С нами с:
    20 сен 2014
    Сообщения:
    145
    Симпатии:
    0
    все работает как надо, вот результат :
    Код (Text):
    1.  
    2. $rs = mysql_query("(SELECT * FROM base WHERE city='".$cityname."' AND deleted != 'yes' AND text LIKE '%".$_GET['poisk']."%' order by id desc) UNION (SELECT * FROM base WHERE city='".$cityname."' AND deleted != 'yes' AND tel LIKE '%".$_GET['poisk']."%' order by id desc) UNION (SELECT * FROM base WHERE city='".$cityname."' AND deleted != 'yes' AND title LIKE '%".$_GET['poisk']."%' order by id desc) order by id desc");
     
  8. Chushkin

    Chushkin Активный пользователь

    С нами с:
    17 дек 2010
    Сообщения:
    1.062
    Симпатии:
    91
    Адрес:
    Мещёра, Центр, Болото N3
    До чего "студенты" НЕ ленивые пошли - вместо того, чтобы пару скобочек поставить, они будут портянку из UNION строчить. :)