Поисковый запрос PHP Mysql

Привет, у меня есть простой поисковый запрос, с которым я сталкиваюсь, когда кто-то записывает единственное имя пользователя, которое он хочет найти, мой запрос находит его, также когда кто-то только пишет фамилию во входном файле и публикует его, он также показывает это тоже, но когда пользователь записывает имя и фамилию вместе во вход, он не может найти пользователя, даже если он существует. Последняя часть запроса $ q, где я написал имя и фамилию, такие как часть, не работает, я знаю, что моя логика плохая, но как я могу исправить это

try { $q = "SELECT * FROM `members` WHERE `first_name` LIKE :search_string OR `last_name` LIKE :search_string OR `first_name` AND `last_name` LIKE :search_string"; $q_do = $db->prepare($q); $q_do->execute( array("search_string"=>'%'.$query.'%') ); $number = $db->query("SELECT FOUND_ROWS()")->fetchColumn(); } catch(PDOException $e) { $log->logError($e." - ".basename(__FILE__)); } 

спасибо

Попробуйте использовать concat:

 $q = "SELECT * FROM `members` WHERE `first_name` LIKE :search_string OR `last_name` LIKE :search_string OR concat(`first_name` , ' ', `last_name`) LIKE :search_string"; 
 SELECT * FROM `members` WHERE `first_name` LIKE :search_string OR `last_name` LIKE :search_string OR `first_name` AND `last_name` LIKE :search_string; 

AND является оператором, а не конкатенатором.

 SELECT * FROM `members` WHERE `first_name` LIKE :search_string OR `last_name` LIKE :search_string OR CONCAT(`first_name`,' ', `last_name`) LIKE :search_string; 

Итак, что вы делаете, нет:

Пользователь вводит «Первый последний»,

Ты ищешь :

 First like '%First Last%' or Last like '%First Last%' ... 

Вам нужно использовать индекс полнотекстового поиска.

http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html

или что-то вроде

http://sphinxsearch.com/

Попробуй это:

 $query = explode(" ", $query); if(count($query)>1){ $fname = $query[0]; $lname = end($query); }else{ $fname = $query[0]; $lname = $query[0]; } $q = "SELECT * FROM `members` WHERE `first_name` LIKE :fname OR `last_name` LIKE :lname"; $q_do = $db->prepare($q); $q_do->execute( array('fname' => "%$fname%", 'lname' => "%$lname%") ); 

Самый простой поисковый запрос для вас. Попробуйте это его рабочий человек.

SELECT * FROM TableName title WHERE, например '% Your Search Text%'