1

likeを使用して非常に単純な検索を記述し、オプションを省略するオプションがありますが、likeステートメントがクエリにwhereステートメントを無視させていることがわかりました

$this->db->like('LOWER(location) OR LOWER(name)', strtolower($term));
$this->db->where('stage', 1);
$this->db->order_by("name", "asc"); 
$query = $this->db->get($this->user_table);
return $query->result();

上記が $term = "dublin"; で生成される例

SELECT * FROM (`users`) WHERE `stage` = 1 AND LOWER(location) OR LOWER(name) LIKE '%dublin%' ORDER BY `name` asc"

「ステージ」が1に等しくない行を返します。

何か案は?ありがとうございました!

4

3 に答える 3

7
$term = strtolower($term);
$this->db->where("(LOWER(location) LIKE '%{$term}%' OR LOWER(name) LIKE '%{$term}%')");
于 2012-06-25T10:58:06.847 に答える
0
$query = $this->db->query("SELECT id_alimento, nombre, unidad, energia_kcal FROM catalogo_alimentos WHERE LOWER(nombre) LIKE '%".$this->db->escape_like_str($search)."%'");
if($query != false){
  if ($query->num_rows() > 0) {
    return $query->result();
  }
}
于 2014-12-11T16:09:58.290 に答える