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 に答える