множественное значение поиска в php и mysql

Я пытаюсь создать поисковую систему в php и mysql. Поисковая система должна иметь возможность принимать несколько значений и отображать все возможные результаты, я проверил этот поток php / mysql для поиска нескольких значений , но мне нужно использовать глобальную переменную в том месте, где LIKE '$search%' . Вот как выглядит мое заявление sql,

 SELECT name FROM product WHERE name LIKE '%$search% 

переменный поиск объявлен правильно, теперь все работает отлично, когда я ищу конкретно, например, в цепочке Gold будет отображаться цепочка Gold. Но когда я ищу другое имя вместе с такой Gold Chain Shirt, где рубашка – это другое имя продукта, результат не отображается. Как мне изменить мою команду sql, чтобы получить несколько результатов из нескольких значений? Мне очень жаль, что я не сказал ранее, что меня попросили сделать это в трех уровнях программирования.

    Здесь есть достойная статья, которая даст вам достойное введение в поиск MySQL с PHP, но в основном вы хотите разделить свою поисковую фразу на части и затем использовать их в запросе MySQL. Например:

     <?php $search = 'Gold Chain Shirt'; $bits = explode(' ', $search); $sql = "SELECT name FROM product WHERE name LIKE '%" . implode("%' OR name LIKE '%", $bits) . "%'"; 

    Вышеприведенный запрос будет генерировать этот запрос:

     SELECT name FROM product WHERE name LIKE '%Gold%' OR name LIKE '%Chain%' OR name LIKE '%Shirt%' 

    Вам действительно нужно посмотреть индексацию FULLTEXT , а затем прочитать о выражениях запроса FULLTEXT .

    Если я правильно вас понял, вы хотите найти все предметы, которые имеют ценность «Золотая цепочка» или «Рубашка». В этом случае, когда вы помещаете вопрос как «php», вы можете сделать это, изменив $search как общее предложение WHERE. Я делаю это таким образом (пример с указанием разных условий для объяснения идеи):

     $search_array=array('name LIKE "%Gold Chain%"', 'price > 5'); $where=implode($search_array,' OR '); // you might wish ' AND ' some_function_to_query('SELECT name FROM product WHERE '.$where); 

    Вы можете улучшить свой поиск, выполнив: «% $ search» для поиска только с начала строки, чтобы получить больше результатов.

    Если вы хотите найти каждое слово из предложения, вы можете сделать следующее:

     $search = 'Gold Chain Shirt'; $searches = explode(' ', $search); $query = "SELECT * FROM product WHERE name "; foreach($searches as $word) { $query .= "LIKE '%{$word}' OR "; }