За последние 24 часа нас посетили 62597 программистов и 1747 роботов. Сейчас ищут 1004 программиста ...

Выборка данных, игнорируется условие

Тема в разделе "PHP для новичков", создана пользователем viphost, 14 янв 2013.

  1. viphost

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

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    Всем привет, не пойму в чем дело.
    Есть на сайте поиск который ищет по 3 полям в одной базе данных, при этом стоит условие что время поста не должно превышать текущее время.
    Вот сам запрос
    Код (Text):
    1. $limit = 'LIMIT ' . $st . ',' . $num;
    2.         $where = "t.public='1' and t.added_at<'".time()."'";
    3.         $where .= " AND (t.tags like '%{$id}%') OR (t.name like '%{$id}%') OR t.size >='{$id}' OR (t.color like '%{$id}%')";
    4.  
    5.         $sql = "SELECT t.*  
    6.                 FROM " . TABLE_PREFIX . "table t
    7.                 WHERE $where
    8.                 ORDER BY " . $order_col . " DESC " . $limit;
    В базе данный time() (added_at) 10 постов равен 8 числу следующего месяца в итоге если поиск идет по полю t.size или по t.color условие t.added_at<'".time()."' не робит
    а если идет поиск по t.tags то все нормально
    Что я не так делаю?
     
  2. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Подумай над тем, как расставить скобки в условиях WHERE.
     
  3. viphost

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

    С нами с:
    23 мар 2009
    Сообщения:
    307
    Симпатии:
    0
    а я уже весь мозг сломал )))
    Код (Text):
    1. $where .= " AND (t.tags like '%{$id}%' OR t.name like '%{$id}%' OR t.size >='{$id}' OR t.color like '%{$id}%')";
    спасибо
    А еще, можно ли как то по экономичнее делать такие запросы?
     
  4. r3l0c

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

    С нами с:
    10 янв 2013
    Сообщения:
    453
    Симпатии:
    4
    {$id} IN (t.tags,t.name,t.color) OR t.size >='{$id}'

    Может так?

    Добавлено спустя 19 минут 16 секунд:
    {$id} -- {} можно убрать, если бы было $id['a'] то надо скобки, а так незачем)