Jak ktoś zasugerował, możesz po prostu dostosować i użyć wyszukiwania pełnotekstowego.
Jeśli wybierzesz tę trasę, musisz włączyć wyszukiwanie pełnotekstowe w wymaganych polach.
Zakładam, że sprawdzisz post_title i post_body (?), które wymagają uruchomienia tego;
ALTER TABLE `posts` ADD FULLTEXT KEY `post_search` (`post_title`,`post_body`);
Gdy to zrobisz, twoje zapytanie może być łatwo edytowane, aby stać się;
$sql = "SELECT * FROM `posts` WHERE MATCH(post_title,post_body) AGAINST '$search'";
Jeśli chcesz lepsze dopasowanie, możesz również przyznać mu punktację i kolejność według tego, co wymagałoby kodu podobnego do tego:
$sql = "SELECT *, MATCH(post_title, post_body) AGAINST ('{$search}') AS score ".
"FROM `posts` WHERE MATCH(post_title, post_body) AGAINST ('{$search}') ORDER BY `score` DESC";
--- UWAGI
Aby przeprowadzić wyszukiwanie, musisz ustalić, w jaki sposób będziesz wyszukiwać.
W ostatnim przypadku użyłem podobnego, po prostu miałem formularz dla wyszukiwanego terminu (o nazwie „Wyszukaj”), co spowodowało wysłanie $_POST['search'] na serwer.
następnie użyłem;
$search = (array_key_exists('search', $_POST) && is_string($_POST['search'])) ? mysql_real_escape_string($_POST['search'], $c) : FALSE ;
if ($search) {
// Do the fulltext query requires (See above)
}
Ponieważ wyszukiwanie pełnotekstowe zignoruje myślnik, pozostaną tylko spacje, co świetnie sprawdza się w przypadku pełnego tekstu, jeśli zdecydujesz się używać wyników z punktacją.