0

我想从我的表中选择产品,其中 Akcie 1 和 Stav 也是 1。但它是搜索查询,所以我有更多类似的东西。它不工作,为什么?这是查询

$q = $this->db->where('Akcia', 1)
          ->like('Titul', $vyraz)
      ->or_like('PodTitul', $vyraz)
      ->or_like('Autor1', $vyraz)
      ->or_like('Autor2', $vyraz)
      ->or_like('Autor3', $vyraz)
      ->or_like('Autor4', $vyraz)
      ->or_like('Prekladatel', $vyraz)
      ->or_like('Rozmer', $vyraz)
      ->or_like('Vydavatelstvo', $vyraz)
      ->or_like('ISBN', $vyraz)
      ->or_like('EAN', $vyraz)
      ->or_like('Popis', $vyraz)
      ->or_like('KratkyPopis', $vyraz)
      ->or_like('RokVydania', $vyraz)
      ->where('stav', 1)
      ->order_by('id', 'desc')
      ->limit($limit)
      ->offset($offset)
     ->get('knihy');

         return $q->result();

这个查询也在选择 Akcia 为 0 的 pruduts 为什么?

4

1 回答 1

1

好吧,如果我是正确的,代码将在 SQL 上产生这种情况:

WHERE Akcia = 1 AND Titul LIKE 'param' OR PodTitul LIKE 'param' etc.

因此,如果“or_like”参数中的任何一个被命中,您的 Akcia 条件将自动被忽略,系统仍将显示所有记录,无论它们具有 1 还是 0 值

您需要的是包含这样的括号:

WHERE Akcia = 1 AND (Titul LIKE 'param' OR PodTitul LIKE 'param' etc.)

我认为这是您需要的,请参阅此链接:

http://codeigniter.com/forums/viewthread/105664/#548079

于 2012-09-13T16:25:28.557 回答