Я использую этот запрос для возврата результатов поиска
$id = $this->auth->get_user_id();
$query = $this->db->query("
SELECT user_id,
facebook_id,
first_name,
last_name,
country,
state,
city,
picture,
cars_id,
cars_name,
cars_picture
FROM user_profiles
JOIN users
ON users.id = user_id
JOIN cars
ON cars.id_fk = user_id
WHERE user_id NOT LIKE '$id'
AND activated = 1
AND banned = 0
AND first_name LIKE '%$search_term%'
OR last_name LIKE '%$search_term%'
OR Concat(first_name, ' ', last_name) LIKE
'%$search_term%'
ORDER BY last_name ASC;
");
Если я нажимаю на пустое поле поиска, возвращаются все пользователи, если я ввожу имя или фамилию, в качестве результата поиска он возвращает только этого конкретного пользователя. Используя командную строку, этот запрос дает аналогичные результаты при ручном вводе (или оставляя пустым) $id
, $first_name
и т. Д.
НО, вот странное поведение: кажется, что следующие строки не влияют на запрос:
user_id NOT LIKE '$id' //line 1
AND activated = 1
AND banned = 0
Например, я не могу исключить текущего пользователя из результатов поиска (строка 1).
Независимо от того, что я введу для activated
или banned
, нажатие на пустой поиск всегда возвращает всех пользователей .
Кикер в том, что если я запускаю этот SQL в командной строке и вручную введите
user_id NOT LIKE '5'
AND activated = 1
AND banned = 0
корректно фильтрует результаты.
Кто-нибудь знает, что я делаю не так? Спасибо за помощь!