Как добавить открывающую скобку в предложение WHERE запроса? - PullRequest
0 голосов
/ 03 августа 2020
$this->db->where_in('k.profile1_id', $value);
 $this->db->or_where_in('k.profile2_id', $value);
 $this->db->or_where_in('k.profile3_id', $value);

Как я могу изменить приведенный выше код, чтобы получить дополнительную круглую скобку после WHERE, как в Mysql?

WHERE ( `k`.`profile1_id` IN ('1') OR `k`.`profile2_id` IN ('1') OR `k`.`profile3_id` IN ('1`') )

Я пробовал: -

   $this->db->group_start();
   $this->db->where_in('k.profile1_id', $value);
   $this->db->or_where_in('k.profile2_id', $value);
   $this->db->or_where_in('k.profile3_id', $value);
   $this->db->group_end();

Но вроде не работает.

Ответы [ 2 ]

1 голос
/ 03 августа 2020

с использованием настраиваемой строки: -

$a = $this->db->where("(`k.profile1_id` = '$value' OR `k.profile2_id` = '$value' OR `k.profile3_id` = '$value')")->where("(`k.profile4_id` = '$value')")->get('table_name')->result_array();

это сгенерирует sql вот так: -

SELECT * FROM `table_name` WHERE (`k.profile1_id` = 'value' OR `k.profile2_id` = 'value' OR `k.profile3_id` = 'value') AND (`k.profile4_id` = 'value')
0 голосов
/ 03 августа 2020
$value = $this->db->escape($value);   
$condition = "(k.profile1_id IN ($value) or k.profile2_id IN ($value) or k.profile3_id IN ($value))";
$this->db->where($condition);
$result = $this->db->get("table_name")->result();

ссылаться this , чтобы избежать sql инъекции в CI, как предлагается в комментарии, и this , чтобы узнать больше о построителе запросов в CI.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...