За последние 24 часа нас посетил 16791 программист и 1641 робот. Сейчас ищет 961 программист ...

Вытащить только нужное из Mysql оператор LIKE

Тема в разделе "PHP и базы данных", создана пользователем ky3mu4u, 25 июл 2011.

  1. ky3mu4u

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

    С нами с:
    16 ноя 2007
    Сообщения:
    111
    Симпатии:
    0
    if($filter_ps != -1) {
    $where[] = '('
    . 'LOWER(scu.params) REGEXP '.$this->_db->Quote('ot_sep=1')
    . ' AND NOT '.$this->_db->Quote('[^_]sep=1')
    . ')';
    }

    сделал через AND NOT, может неправильно что сделал, ошибку не выдает строчку . 'LOWER(scu.params) REGEXP '.$this->_db->Quote('ot_sep=1') цепляет а на строчку . ' AND NOT '.$this->_db->Quote('[^_]sep=1') ноль внимания и на переменную в ней '[^_]sep=1'
    посмотрите, может неправильно что сделал
     
  2. ky3mu4u

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

    С нами с:
    16 ноя 2007
    Сообщения:
    111
    Симпатии:
    0
    . ' AND NOT REGEXP '.$this->_db->Quote('[^_]sep=1')
    поправлюсь))
     
  3. ky3mu4u

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

    С нами с:
    16 ноя 2007
    Сообщения:
    111
    Симпатии:
    0
    пытался в одну строчку запихнуть, но выдает ошибку(((
    if($filter_ps != -1) {
    $where[] = '('
    . 'LOWER(scu.params) REGEXP '.$this->_db->Quote('ot_sep=1')' AND NOT REGEXP '.$this->_db->Quote('[^_]sep=1')
    . ')';
    }
    целый день на работе мозг выношу этой функцией(( ктонибуть подсабите)))
     
  4. Gromo

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

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    что-то не похоже. тупо сидеть и ждать можно годами. а тут пара минут гугления, например так http://www.google.ru/#sclient=psy&hl=ru ... 07&bih=924

    приводят нас к

    [sql]'LOWER(scu.params) REGEXP '.$this->_db->Quote('ot_sep=1')' AND LOWER(scu.params) NOT REGEXP '.$this->_db->Quote('[^_]sep=1')[/sql]

    так должно сработать
     
  5. ky3mu4u

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

    С нами с:
    16 ноя 2007
    Сообщения:
    111
    Симпатии:
    0
    я так пробывал уже, ошибку выдает Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING
    тут толи точки нехватает, толи скобки:
    if($filter_ps != -1) {
    $where[] = '('
    . 'LOWER(scu.params) REGEXP '.$this->_db->Quote('ot_sep=1')' AND LOWER(scu.params) NOT REGEXP '.$this->_db->Quote('[^_]sep=1')
    . ')';
    }
     
  6. ky3mu4u

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

    С нами с:
    16 ноя 2007
    Сообщения:
    111
    Симпатии:
    0
    Все получилось! Спасибо! я пробывал такие варианты но блин я забыл про то что во втором выражении надо было тоже ячейку базы указать))) AND LOWER(scu.params) NOT REGEXP)) я неправильно писал так AND NOT REGEXP. А ошибку T_CONSTANT_ENCAPSED_STRING которая возникла я устранил следующем образом:
    if($filter_ps != -1) {
    $where[] = '('
    . 'LOWER(scu.params) REGEXP '.$this->_db->Quote('ot_sep=1')
    . ' AND LOWER(scu.params) NOT REGEXP '.$this->_db->Quote('[^_]sep=1')
    . ')';
    }
    перенес AND на вторую строку)) Gromo спасибо буду мучиться дальше))