Codeigniter数据库选择

时间:2012-09-13 15:58:36

标签: php sql codeigniter activerecord

我想从我的桌子中选择产品,其中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为什么?

1 个答案:

答案 0 :(得分: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