Поиск с полным именем вместо имени или фамилии

Я разрабатываю API, построенный с PHP и Codeigniter, и я использую MySQL как базу данных.

У меня есть пользовательская таблица под названием «Пользователи», которая содержит следующие столбцы:

- ID - Firstname - Lastname - Email 

Как пользователь может выполнить поиск в этой таблице с использованием полного имени? Например, он отлично подходит для поиска Мартином или Смитом, но не Мартином Смитом.

Это запрос, который я использую сейчас:

 $this->db->select('*'); $this->db->from('users'); $this->db->like('firstname', $args['query']); $this->db->or_like('lastname', $args['query']); 

Обновить

Если я использую этот запрос, как предложено ниже, я ничего не могу найти. Не с полным именем, именем или фамилией. Тогда как имя, так и фамилия должны быть одним и тем же словом.

 $this->db->select('*'); $this->db->from('users'); $this->db->like('firstname', $args['query']); $this->db->like('lastname', $args['query']); 

Прямо из головы, но как насчет

 $input = 'Martin Smith'; $names = explode($input); $this->db->select('*'); $this->db->from('users'); $this->db->where_in('firstname', $names); $this->db->or_where_in('lastname', $names); 

Должно вывести что-то вроде:

 SELECT * FROM users WHERE firstname IN ('Martin', 'Smith') OR lastname IN ('Martin', 'Smith') 

Пытаться:

 $this->db->select('*'); $this->db->from('users'); $this->db->like('firstname', $args['first_name']); $this->db->like('lastname', $args['last_name']); 

Это приводит к:

 Select * from users WHERE firstname LIKE '%first_name%' AND lastname LIKE '%last_name% 

Изменить: $this->db->or_like('lastname', $args['query']);

To: $this->db->like('lastname', $args['query']);

Вы должны изменить это ИЛИ для И:

 SELECT * FROM users WHERE Firstname = '$firstname' AND Lastname = '$lastname' 

Я делаю это и отлично работаю для меня:

 $terms = explode(' ', $searchtxtusername); if(count($terms)>1){ $this->db->like('u.first_name', $this->db->escape_like_str($terms[0])); $this->db->like('u.last_name', $this->db->escape_like_str($terms[1])); }else{ $this->db->like('u.first_name', $this->db->escape_like_str($terms[0])); $this->db->or_like('u.last_name', $this->db->escape_like_str($terms[0])); } 

Здесь $ searchtxtusername – это поисковый запрос, включающий имя и фамилию (пробел разделен). Если есть только один термин, то он проверяет один и тот же термин для имени и фамилии.

Пример: если я искал Боба, то условие поиска выглядит так:

 first_name LIKE '%Bob%' AND last_name LIKE '%Bob%' 

и если я искал Боба Беггинса, тогда условие поиска будет:

 first_name LIKE '%Bob%' AND last_name LIKE '%Beggins%'