Построитель запросов CodeIgniter с отдельными условиями OR LIKE И условием, отличным от LIKE [дубликат]Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Построитель запросов CodeIgniter с отдельными условиями OR LIKE И условием, отличным от LIKE [дубликат]

Сообщение Anonymous »

У меня есть запрос с круглыми скобками для инкапсуляции логики:

Код: Выделить всё

SELECT *
FROM users
WHERE company_id = 1 AND (
name LIKE "%smith%" OR
last_name LIKE "%smith%"
)
Но в CodeIgniter у меня есть:

Код: Выделить всё

$query_members = $this->db
->select('users.*')
->from('users')
->like(array('users.names' => $search))
->or_like(array('users.last_name' => $search))
->where(array('users.company_id' => 1));
Это создает:

Код: Выделить всё

SELECT *
FROM users
WHERE
name LIKE '%smith%' OR
last_name LIKE '%smith%' AND
company_id = 1;
И не работает, мне нужны ((a или b) и c), а не (a или b и c).
Я нашел решение здесь: инкапсулировать динамическое количество условий OR LIKE в круглые скобки, используя методы активной записи CodeIgniter, но переменная экранируется полными кавычками, мне нужно реализовать несколько условий LIKE с подстановочными знаками и кавычками значений. У меня есть это:

Код: Выделить всё

$search_escaped = $this->db->escape($search);
$query_members = $this->db
->select('users.*')
->from('users')
->where('(users.names LIKE "%'.$search_escaped.'%" OR users.last_name LIKE "%'.$search_escaped.'%")')
->where(array('members.company_id' => (int)$company_id));
Но запрос добавляет неверные кавычки:

Код: Выделить всё

SELECT `users`.*
FROM `users`
WHERE (users.names LIKE "%'smith'%" OR users.last_name LIKE "%'smith'%")
AND `members`.`company_id` = 2
"%'smith'%" плохо цитируется. Как я могу решить эту проблему, используя методы построения запросов CodeIgniter 3.0.0?

Подробнее здесь: https://stackoverflow.com/questions/361 ... ike-condit
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»